Sha256: f44580ba8e55c1833a913e4b3af4c04f8c79536f4effbb3b40d904370ee66ab9
Contents?: true
Size: 1.17 KB
Versions: 3
Compression:
Stored size: 1.17 KB
Contents
module FakeRedis # Represents a normal hash with some additional expiration information # associated with each key class ExpiringHash < Hash attr_reader :expires def initialize(*) super @expires = {} end def [](key) key = normalize key delete(key) if expired?(key) super end def []=(key, val) key = normalize key expire(key) super end def delete(key) key = normalize key expire(key) super end def expire(key) key = normalize key expires.delete(key) end def expired?(key) key = normalize key expires.include?(key) && expires[key] < Time.now end def key?(key) key = normalize key delete(key) if expired?(key) super end def values_at(*keys) keys.each do |key| key = normalize(key) delete(key) if expired?(key) end super end def keys super.select do |key| key = normalize(key) if expired?(key) delete(key) false else true end end end def normalize key key.to_s end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
fakeredis-0.5.0 | lib/fakeredis/expiring_hash.rb |
fakeredis-0.4.3 | lib/fakeredis/expiring_hash.rb |
fakeredis-0.4.2 | lib/fakeredis/expiring_hash.rb |