Class: Concussion::RedisAdapter
- Inherits:
-
Object
- Object
- Concussion::RedisAdapter
- Defined in:
- lib/concussion/redis_adapter.rb
Constant Summary collapse
- KEY =
"--concussion-redis-adapter-store"- DEFAULT_BATCH_SIZE =
1000
Instance Attribute Summary collapse
-
#namespace ⇒ Object
Returns the value of attribute namespace.
-
#redis ⇒ Object
Returns the value of attribute redis.
Instance Method Summary collapse
- #del(key) ⇒ Object
- #find_each(opts = {}) ⇒ Object
- #get(key) ⇒ Object
-
#initialize(opts = {}) ⇒ RedisAdapter
constructor
A new instance of RedisAdapter.
- #namespaced_key ⇒ Object
- #set(key, data) ⇒ Object
Constructor Details
#initialize(opts = {}) ⇒ RedisAdapter
Returns a new instance of RedisAdapter.
34 35 36 37 |
# File 'lib/concussion/redis_adapter.rb', line 34 def initialize(opts = {}) self.redis = opts.fetch(:redis) { Redis.new } self.namespace = opts.fetch(:namespace) { "" } end |
Instance Attribute Details
#namespace ⇒ Object
Returns the value of attribute namespace.
29 30 31 |
# File 'lib/concussion/redis_adapter.rb', line 29 def namespace @namespace end |
#redis ⇒ Object
Returns the value of attribute redis.
29 30 31 |
# File 'lib/concussion/redis_adapter.rb', line 29 def redis @redis end |
Instance Method Details
#del(key) ⇒ Object
52 53 54 |
# File 'lib/concussion/redis_adapter.rb', line 52 def del(key) redis.hdel(namespaced_key, key) end |
#find_each(opts = {}) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 |
# 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) ⇒ Object
43 44 45 |
# File 'lib/concussion/redis_adapter.rb', line 43 def get(key) decode_from_redis redis.hget(namespaced_key, key) end |
#namespaced_key ⇒ Object
39 40 41 |
# File 'lib/concussion/redis_adapter.rb', line 39 def namespaced_key "#{namespace}#{KEY}" end |
#set(key, data) ⇒ Object
47 48 49 50 |
# File 'lib/concussion/redis_adapter.rb', line 47 def set(key, data) redis.hset(namespaced_key, key, encode_for_redis(data)) data end |