class Sir::Backends::RedisCache
Constants
- DEFAULTS
- META
- TYPEERROR
Public Class Methods
able?()
click to toggle source
# File lib/sir/backends/redis_cache.rb, line 87 def self.able? return TYPEERROR == @@redis.echo(TYPEERROR) end
dump()
click to toggle source
# File lib/sir/backends/redis_cache.rb, line 102 def self.dump raise TypeError, TYPEERROR end
flush()
click to toggle source
# File lib/sir/backends/redis_cache.rb, line 117 def self.flush return true if @@redis.bgsave end
get(key)
click to toggle source
Calls superclass method
Sir::Backends::Base::get
# File lib/sir/backends/redis_cache.rb, line 22 def self.get(key) invalid = self.valid?({ key: key }) raise ArgumentError, invalid if invalid nskey = self::nsed_key(key) got = @@redis.get(nskey) unless got.nil? case @@config[:serializer] when :marshal return Marshal.load(got)[0] when :json return JSON.parse(got)[0] else raise TypeError, "Invalid serializer: #{@@config[:serializer]}. You probably want to look at your Sir.configure() statement" end else super end end
keys(mask = "*")
click to toggle source
# File lib/sir/backends/redis_cache.rb, line 127 def self.keys(mask = "*") return @@redis.keys(mask).map {|x| x.gsub(/^#{self.nsed_key("")}/, '').intern} end
kill(key)
click to toggle source
# File lib/sir/backends/redis_cache.rb, line 92 def self.kill(key) invalid = self.valid?({ key: key }) raise ArgumentError, invalid if invalid if @@redis.del(self::nsed_key(key)) return true end end
length()
click to toggle source
# File lib/sir/backends/redis_cache.rb, line 122 def self.length return @@redis.dbsize end
nuke()
click to toggle source
# File lib/sir/backends/redis_cache.rb, line 107 def self.nuke return true if @@redis.flushdb end
post_configure()
click to toggle source
# File lib/sir/backends/redis_cache.rb, line 132 def self.post_configure @@redis = @@config[:redis_obj] end
put(key, value, expiry = Sir.config(:default_expiry))
click to toggle source
@note We wrap `value` in `[ ]` to protect nil values and such from being misinterpreted
JSON in particular: JSON.parse(nil.to_json) #=> JSON::ParserError but JSON.parse([nil].to_json) #=> [nil]
# File lib/sir/backends/redis_cache.rb, line 49 def self.put(key, value, expiry = Sir.config(:default_expiry)) invalid = self.valid?({ key: key, value: value, expiry: expiry }) raise ArgumentError, invalid if invalid key = self::nsed_key(key) ser = nil case @@config[:serializer] when :marshal ser = Marshal.dump([value]).to_s when :json ser = [value].to_json else raise TypeError, "Invalid serializer: #{@@config[:serializer]}. You probably want to look at your Sir.configure() statement" end @@redis.set(key, ser) #### This code snippet needs to be DRYed expiry = expiry.to_i unless expiry.nil? # normalize relative/absolute times to absolute time, skip if expiry = nil if !expiry.nil? && Time.now.to_i > expiry expiry += Time.now.to_i end #### if expiry == nil @@redis.persist(key) else @@redis.expireat(key, expiry.to_i) end return value end
sweep(include_nil_expiry = nil)
click to toggle source
# File lib/sir/backends/redis_cache.rb, line 112 def self.sweep(include_nil_expiry = nil) raise TypeError, TYPEERROR end
Private Class Methods
nsed_key(key)
click to toggle source
returns a namespaced key
# File lib/sir/backends/redis_cache.rb, line 140 def self.nsed_key(key) return "#{@@config[:namespace]}-#{key}" end