Class: Concussion::RedisAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/concussion/redis_adapter.rb

Constant Summary collapse

KEY =
"--concussion-redis-adapter-store"
DEFAULT_BATCH_SIZE =
1000

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#namespaceObject

Returns the value of attribute namespace.



29
30
31
# File 'lib/concussion/redis_adapter.rb', line 29

def namespace
  @namespace
end

#redisObject

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_keyObject



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