class Cue::Store::Redis
Attributes
namespace[W]
redis[W]
Public Class Methods
configure() { |klass| ... }
click to toggle source
# File lib/cue/store/redis.rb, line 13 def configure(&block) self.tap { |klass| yield(klass) } end
namespace()
click to toggle source
# File lib/cue/store/redis.rb, line 17 def namespace @namespace ||= 'cue' end
redis()
click to toggle source
# File lib/cue/store/redis.rb, line 21 def redis @redis ||= ::Redis.new end
Public Instance Methods
clear()
click to toggle source
# 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)
click to toggle source
# 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| ... }
click to toggle source
# File lib/cue/store/redis.rb, line 40 def each items = keys.map(&method(:read)).sort yield(items) end
keys()
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# File lib/cue/store/redis.rb, line 58 def write(key, item) add_key(key) add_item(key, item) end
Private Instance Methods
add_item(key, item)
click to toggle source
# File lib/cue/store/redis.rb, line 65 def add_item(key, item) redis.mapped_hmset(item_key(key), serialize(item)) end
add_key(key)
click to toggle source
# File lib/cue/store/redis.rb, line 69 def add_key(key) redis.sadd(redis_key('keys'), item_key(key)) end
deserialize(item_hash)
click to toggle source
# File lib/cue/store/redis.rb, line 73 def deserialize(item_hash) content = item_hash['content'] created_at = Time.parse(item_hash['created_at']) if item_hash['created_at'] state = item_hash['state'].to_sym Cue::Item.new(content, created_at: created_at, state: state) end
item_key(key)
click to toggle source
# File lib/cue/store/redis.rb, line 81 def item_key(key) redis_key('item', key) end
namespace()
click to toggle source
# File lib/cue/store/redis.rb, line 85 def namespace self.class.namespace end
redis()
click to toggle source
# File lib/cue/store/redis.rb, line 89 def redis self.class.redis end
redis_key(*components)
click to toggle source
# File lib/cue/store/redis.rb, line 93 def redis_key(*components) key = *components key.unshift(namespace) key.join(':') end
serialize(item)
click to toggle source
# File lib/cue/store/redis.rb, line 100 def serialize(item) { 'state' => item.state.to_s, 'content' => item.content }.tap do |hash| hash['created_at'] = item.created_at.to_s if item.created_at end end