class Memcache
this file is part of manqod manqod is distributed under the CDDL licence the author of manqod is Dobai-Pataky Balint(dpblnt@gmail.com)
Attributes
memcache[R]
memcache_lib[R]
version[R]
Public Class Methods
new(servers,options={})
click to toggle source
# File lib/Memcache.rb, line 6 def initialize(servers,options={}) @prefix_key=options[:prefix_key] @memcache_lib=nil @memcache=nil @version=nil begin @version=Memcached::VERSION einfo("using memcached(#{version})") @memcache_lib=:memcached rescue =>err begin @version=Dalli::VERSION einfo("falling back memcache to dalli(#{version})") @memcache_lib=:dalli rescue =>err eerror("No memcache lib available, Follow install instructions on http://manqod.sourceforge.net") end end case memcache_lib when :memcached options[:default_ttl] = 0 options[:timeout] = 30 @memcache = Memcached.new(servers,options) when :dalli options.delete(:prefix_key) options[:expires_in]=0 @memcache = Dalli::Client.new(servers,options) else eeror("No memcache lib available") end end
Public Instance Methods
get(key)
click to toggle source
# File lib/Memcache.rb, line 40 def get(key) case memcache_lib when :memcached begin return memcache.get(key) rescue Memcached::NotFound ewarn("cannot load data for key:#{key.inspect}") return nil end when :dalli if key.class.name == "Array" values=Hash.new key.each{|k| values[k]=dalli_get_one(k)} return values else dalli_get_one(key) end end end
to_s()
click to toggle source
# File lib/Memcache.rb, line 61 def to_s "Memcache(#{memcache_lib}-#{version})[#{@prefix_key}]" end
Private Instance Methods
dalli_get_one(key)
click to toggle source
# File lib/Memcache.rb, line 66 def dalli_get_one(key) key=@prefix_key + key begin value = memcache.get(key) rescue #we were connected to the server, we now retry 10 secs t=Time.new if t.nil? retry unless Time.new-t>10 end bytes = value.unpack('cc') if value && value.is_a?(String) && value.size > 2 if bytes && bytes[0] == 4 && bytes[1] == 8 return Marshal.load(value) rescue value end return value end