Class: Hitnmiss::RedisDriver
- Inherits:
-
Object
- Object
- Hitnmiss::RedisDriver
- Includes:
- Driver::Interface
- Defined in:
- lib/hitnmiss/redis_driver.rb,
lib/hitnmiss/redis_driver-version.rb
Constant Summary collapse
- VERSION =
"1.1.0"
Instance Method Summary collapse
- #all(keyspace) ⇒ Object
- #clear(keyspace) ⇒ Object
- #delete(key) ⇒ Object
- #get(key) ⇒ Object
-
#initialize(redis_url) ⇒ RedisDriver
constructor
A new instance of RedisDriver.
- #set(key, entity) ⇒ Object
Constructor Details
#initialize(redis_url) ⇒ RedisDriver
Returns a new instance of RedisDriver.
9 10 11 |
# File 'lib/hitnmiss/redis_driver.rb', line 9 def initialize(redis_url) @redis = Redis.new(:url => redis_url) end |
Instance Method Details
#all(keyspace) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/hitnmiss/redis_driver.rb', line 36 def all(keyspace) separator = Hitnmiss::Repository::KeyGeneration::KEY_COMPONENT_SEPARATOR keys = get_keys("#{keyspace}#{separator}*") return [] if keys.empty? values = @redis.mget(*keys) loaded_values = [] values.each do |value| loaded_values << deserialize_value(value).delete(:value) unless value.nil? end return loaded_values end |
#clear(keyspace) ⇒ Object
48 49 50 51 52 |
# File 'lib/hitnmiss/redis_driver.rb', line 48 def clear(keyspace) separator = Hitnmiss::Repository::KeyGeneration::KEY_COMPONENT_SEPARATOR keys = get_keys("#{keyspace}#{separator}*") @redis.del(*keys) unless keys.empty? end |
#delete(key) ⇒ Object
32 33 34 |
# File 'lib/hitnmiss/redis_driver.rb', line 32 def delete(key) @redis.del(key) end |
#get(key) ⇒ Object
25 26 27 28 29 30 |
# File 'lib/hitnmiss/redis_driver.rb', line 25 def get(key) cached_item = @redis.get(key) return Hitnmiss::Driver::Miss.new if cached_item.nil? deserialized_value = deserialize_value(cached_item) Hitnmiss::Driver::Hit.new(deserialized_value[:value], build_hit_keyword_args(deserialized_value)) end |
#set(key, entity) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/hitnmiss/redis_driver.rb', line 13 def set(key, entity) value = { value: entity.value } value[:updated_at] = value[:fingerprint] = entity.fingerprint if entity.fingerprint value[:last_modified] = entity.last_modified if entity.last_modified if entity.expiration @redis.setex(key, entity.expiration, serialize_value(value)) else @redis.set(key, serialize_value(value)) end end |