Class: Cue::Store::Redis

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/cue/store/redis.rb

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Class Attribute Details

.namespaceObject



17
18
19
# File 'lib/cue/store/redis.rb', line 17

def namespace
  @namespace ||= 'cue'
end

.redisObject



21
22
23
# File 'lib/cue/store/redis.rb', line 21

def redis
  @redis ||= ::Redis.new
end

Class Method Details

.configure(&block) ⇒ Object



13
14
15
# File 'lib/cue/store/redis.rb', line 13

def configure(&block)
  self.tap { |klass| yield(klass) }
end

Instance Method Details

#clearObject



26
27
28
29
30
31
# File 'lib/cue/store/redis.rb', line 26

def clear
  item_keys = redis.smembers(redis_key('keys'))
  keys_key  = redis_key('keys')
  
  redis.del(item_keys, keys_key)
end

#delete(key) ⇒ Object



33
34
35
36
37
38
# File 'lib/cue/store/redis.rb', line 33

def delete(key)
  item_key = item_key(key)
  
  redis.del(item_key)
  redis.srem(redis_key('keys'), item_key)
end

#each {|items| ... } ⇒ Object

Yields:

  • (items)


40
41
42
43
# File 'lib/cue/store/redis.rb', line 40

def each
  items = keys.map(&method(:read)).sort
  yield(items)
end

#keysObject



45
46
47
48
49
# File 'lib/cue/store/redis.rb', line 45

def keys
  redis.smembers(redis_key('keys')).map do |redis_key|
    redis_key.split(':').last
  end
end

#read(key) ⇒ Object



51
52
53
54
55
56
# File 'lib/cue/store/redis.rb', line 51

def read(key)
  item_hash = redis.hgetall(item_key(key))
  return nil if item_hash.empty?
  
  deserialize(item_hash)
end

#write(key, item) ⇒ Object



58
59
60
61
# File 'lib/cue/store/redis.rb', line 58

def write(key, item)
  add_key(key)
  add_item(key, item)
end