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
- #values ⇒ Object
- #write(key, val, options = {}) ⇒ Object
Methods inherited from RedisBase
Constructor Details
#initialize(name, options = {}) ⇒ RedisHashExpiry
Returns a new instance of RedisHashExpiry.
19 20 21 22 23 24 25 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 19 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.
17 18 19 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 17 def store @store end |
Instance Method Details
#[](key) ⇒ Object
27 28 29 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 27 def [](key) deserialize @store.get(key_name(key)) end |
#[]=(key, val, options = {}) ⇒ Object
31 32 33 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 31 def []=(key, val, ={}) write(key, val, ) end |
#cache(key, options = {}) ⇒ Object
60 61 62 63 64 65 66 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 60 def cache(key, ={}) fetch(key, ) do result = yield key write(key, result, ) result end end |
#clear ⇒ Object
107 108 109 110 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 107 def clear destroy # keys.each{ |key| delete key } end |
#dekey(key) ⇒ Object
116 117 118 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 116 def dekey(key) deserialize(key[key_prefix.size-1..-1]) end |
#delete(key) ⇒ Object
72 73 74 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 72 def delete(key) @store.del key_name(key) end |
#destroy ⇒ Object
68 69 70 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 68 def destroy keys.each{ |key| delete key } end |
#empty? ⇒ Boolean
76 77 78 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 76 def empty? size == 0 end |
#fetch(key, options = {}) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 47 def fetch(key, ={}) 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
84 85 86 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 84 def has_key?(key) key? key end |
#key?(key) ⇒ Boolean
87 88 89 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 87 def key?(key) @store.exists key_name(key) end |
#key_name(key) ⇒ Object
112 113 114 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 112 def key_name(key) "#{@title}-#{serialize(key)}" end |
#key_prefix ⇒ Object
120 121 122 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 120 def key_prefix @key_prefix ||= "#{@title}-*" end |
#keys ⇒ Object
91 92 93 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 91 def keys @store.keys(key_prefix).collect{ |key| dekey key } end |
#set_expiration(key, seconds) ⇒ Object
35 36 37 38 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 35 def set_expiration(key, seconds) return unless seconds @store.expire(key_name(key), seconds) end |
#size ⇒ Object
80 81 82 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 80 def size keys.size end |
#to_hash ⇒ Object
99 100 101 102 103 104 105 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 99 def to_hash hash = {} keys.each do |key| hash[key] = self[key] end hash end |
#values ⇒ Object
95 96 97 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 95 def values keys.collect{ |key| self[key] } end |
#write(key, val, options = {}) ⇒ Object
40 41 42 43 44 45 |
# File 'lib/collectr/redis/redis_hash_expiry.rb', line 40 def write(key, val, ={}) expiration = .fetch(:expires_in) { @default_expires_in } @store.set key_name(key), serialize(val) set_expiration(key, expiration) val end |