Class: Collectr::RedisHashExpiry
- Defined in:
- lib/collectr/redis/redis_hash_expiry.rb
Instance Attribute Summary collapse
-
#store ⇒ Object
readonly
Returns the value of attribute store.
Instance Method Summary collapse
- #[](key) ⇒ Object
- #[]=(key, val, options = {}) ⇒ Object
- #cache(key, options = {}) ⇒ Object
- #clear ⇒ Object
- #dekey(key) ⇒ Object
- #delete(key) ⇒ Object
- #destroy ⇒ Object
- #empty? ⇒ Boolean
- #fetch(key, options = {}) ⇒ Object
- #has_key?(key) ⇒ Boolean
-
#initialize(name, options = {}) ⇒ RedisHashExpiry
constructor
A new instance of RedisHashExpiry.
- #key?(key) ⇒ Boolean
- #key_name(key) ⇒ Object
- #key_prefix ⇒ Object
- #keys ⇒ Object
- #set_expiration(key, seconds) ⇒ Object
- #size ⇒ Object
- #to_hash ⇒ Object
- #write(key, val, options = {}) ⇒ Object
Methods inherited from RedisBase
Constructor Details
#initialize(name, options = {}) ⇒ RedisHashExpiry
Returns a new instance of RedisHashExpiry.
20 21 22 23 24 25 26 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 20 def initialize(name, ={}) @title = name # Use raw only when both the keys and values are strings. @raw = .fetch(:raw) { false } @store = Redis.current @default_expires_in = [:expires_in] end |
Instance Attribute Details
#store ⇒ Object (readonly)
Returns the value of attribute store.
18 19 20 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 18 def store @store end |
Instance Method Details
#[](key) ⇒ Object
28 29 30 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 28 def [](key) deserialize @store.get(key_name(key)) end |
#[]=(key, val, options = {}) ⇒ Object
32 33 34 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 32 def []=(key, val, ={}) write(key, val, ) end |
#cache(key, options = {}) ⇒ Object
62 63 64 65 66 67 68 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 62 def cache(key, ={}) fetch(key, ) do result = yield key write(key, result, ) result end end |
#clear ⇒ Object
105 106 107 108 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 105 def clear destroy # keys.each{ |key| delete key } end |
#dekey(key) ⇒ Object
114 115 116 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 114 def dekey(key) deserialize(key[key_prefix.size-1..-1]) end |
#delete(key) ⇒ Object
74 75 76 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 74 def delete(key) @store.del key_name(key) end |
#destroy ⇒ Object
70 71 72 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 70 def destroy keys.each{ |key| delete key } end |
#empty? ⇒ Boolean
78 79 80 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 78 def empty? size == 0 end |
#fetch(key, options = {}) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 48 def fetch(key, ={}) expiration = .fetch(:expires_in) { @default_expires_in } result = self[key] if result.nil? return nil if has_key?(key) if block_given? result = yield key else raise KeyError end end result end |
#has_key?(key) ⇒ Boolean
86 87 88 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 86 def has_key?(key) key? key end |
#key?(key) ⇒ Boolean
89 90 91 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 89 def key?(key) @store.exists key_name(key) end |
#key_name(key) ⇒ Object
110 111 112 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 110 def key_name(key) "#{@title}-#{serialize(key)}" end |
#key_prefix ⇒ Object
118 119 120 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 118 def key_prefix @key_prefix ||= "#{@title}-*" end |
#keys ⇒ Object
93 94 95 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 93 def keys @store.keys(key_prefix).collect{ |key| dekey key } end |
#set_expiration(key, seconds) ⇒ Object
36 37 38 39 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 36 def set_expiration(key, seconds) return unless seconds @store.expire(key_name(key), seconds) end |
#size ⇒ Object
82 83 84 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 82 def size keys.size end |
#to_hash ⇒ Object
97 98 99 100 101 102 103 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 97 def to_hash hash = {} keys.each do |key| hash[key] = self[key] end hash end |
#write(key, val, options = {}) ⇒ Object
41 42 43 44 45 46 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 41 def write(key, val, ={}) expiration = .fetch(:expires_in) { @default_expires_in } @store.set key_name(key), serialize(val) set_expiration(key, expiration) val end |