Class: Lit::Adapters::RedisStorage
- Inherits:
-
Object
- Object
- Lit::Adapters::RedisStorage
- Defined in:
- lib/lit/adapters/redis_storage.rb
Instance Method Summary collapse
- #[](key) ⇒ Object
- #[]=(k, v) ⇒ Object
- #clear ⇒ Object
- #delete(k) ⇒ Object
-
#exists?(key) ⇒ Boolean
This handles a change in the redis-rb gem that changes exists => exists?.
- #has_key?(key) ⇒ Boolean (also: #key?)
- #incr(key) ⇒ Object
-
#initialize ⇒ RedisStorage
constructor
A new instance of RedisStorage.
- #keys ⇒ Object
- #prefix ⇒ Object
- #sort ⇒ Object
Constructor Details
#initialize ⇒ RedisStorage
Returns a new instance of RedisStorage.
17 18 19 |
# File 'lib/lit/adapters/redis_storage.rb', line 17 def initialize Lit.redis end |
Instance Method Details
#[](key) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/lit/adapters/redis_storage.rb', line 30 def [](key) if exists?(_prefixed_key_for_array(key)) Lit.redis.lrange(_prefixed_key(key), 0, -1) elsif exists?(_prefixed_key_for_nil(key)) nil else val = Lit.redis.get(_prefixed_key(key)) return val if val.present? subtree_of_key(key) end end |
#[]=(k, v) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/lit/adapters/redis_storage.rb', line 43 def []=(k, v) delete(k) if v.is_a?(Array) Lit.redis.set(_prefixed_key_for_array(k), '1') v.each { |ve| Lit.redis.rpush(_prefixed_key(k), ve.to_s) } elsif v.nil? Lit.redis.set(_prefixed_key_for_nil(k), '1') Lit.redis.set(_prefixed_key(k), '') else Lit.redis.set(_prefixed_key(k), v) end end |
#clear ⇒ Object
62 63 64 |
# File 'lib/lit/adapters/redis_storage.rb', line 62 def clear Lit.redis.del(keys) unless keys.empty? end |
#delete(k) ⇒ Object
56 57 58 59 60 |
# File 'lib/lit/adapters/redis_storage.rb', line 56 def delete(k) Lit.redis.del(_prefixed_key_for_array(k)) Lit.redis.del(_prefixed_key_for_nil(k)) Lit.redis.del(_prefixed_key(k)) end |
#exists?(key) ⇒ Boolean
This handles a change in the redis-rb gem that changes exists => exists?
22 23 24 25 26 27 28 |
# File 'lib/lit/adapters/redis_storage.rb', line 22 def exists?(key) # Use recommended binary-returning method create [with this redis-rb commit](https://github.com/redis/redis-rb/commit/bf42fc9e0db4a1719d9b1ecc65aeb20425d44427). return Lit.redis.exists?(key) if Lit.redis.respond_to?(:exists?) # Fall back with older gem Lit.redis.exists(key) end |
#has_key?(key) ⇒ Boolean Also known as: key?
70 71 72 |
# File 'lib/lit/adapters/redis_storage.rb', line 70 def has_key?(key) exists?(_prefixed_key(key)) end |
#incr(key) ⇒ Object
75 76 77 |
# File 'lib/lit/adapters/redis_storage.rb', line 75 def incr(key) Lit.redis.incr(_prefixed_key(key)) end |
#keys ⇒ Object
66 67 68 |
# File 'lib/lit/adapters/redis_storage.rb', line 66 def keys Lit.redis.keys(_prefixed_key + '*') end |
#prefix ⇒ Object
83 84 85 |
# File 'lib/lit/adapters/redis_storage.rb', line 83 def prefix _prefix end |