class Concussion::RedisAdapter
Constants
- DEFAULT_BATCH_SIZE
- KEY
Attributes
namespace[RW]
redis[RW]
Public Class Methods
new(opts = {})
click to toggle source
# File lib/concussion/redis_adapter.rb, line 34 def initialize(opts = {}) self.redis = opts.fetch(:redis) { Redis.new } self.namespace = opts.fetch(:namespace) { "" } end
Public Instance Methods
del(key)
click to toggle source
# File lib/concussion/redis_adapter.rb, line 52 def del(key) redis.hdel(namespaced_key, key) end
find_each(opts = {}) { |key, decode_from_redis(data)| ... }
click to toggle source
# File lib/concussion/redis_adapter.rb, line 56 def find_each(opts = {}) return enum_for(:find_each, opts) unless block_given? batch_size = opts.fetch(:batch_size) { DEFAULT_BATCH_SIZE } keys = redis.hkeys namespaced_key keys.each_slice(batch_size).each do |key_slice| Hash[key_slice.zip(redis.hmget(namespaced_key, key_slice))].each do |key, data| yield key, decode_from_redis(data) end end end
get(key)
click to toggle source
# File lib/concussion/redis_adapter.rb, line 43 def get(key) decode_from_redis redis.hget(namespaced_key, key) end
namespaced_key()
click to toggle source
# File lib/concussion/redis_adapter.rb, line 39 def namespaced_key "#{namespace}#{KEY}" end
set(key, data)
click to toggle source
# File lib/concussion/redis_adapter.rb, line 47 def set(key, data) redis.hset(namespaced_key, key, encode_for_redis(data)) data end
Private Instance Methods
decode_from_redis(str)
click to toggle source
# File lib/concussion/redis_adapter.rb, line 70 def decode_from_redis(str) val = str.to_s.force_encoding('iso-8859-1') val.present? ? Marshal.restore(val) : nil end
encode_for_redis(data)
click to toggle source
# File lib/concussion/redis_adapter.rb, line 75 def encode_for_redis(data) Marshal.dump(data) end