module Sequel::Plugins::Caching::ClassMethods

Attributes

cache_ignore_exceptions[R]

If true, ignores exceptions when gettings cached records (the memcached API).

cache_store[R]

The cache store object for the model, which should implement the Ruby-Memcache (or memcached) API

cache_ttl[R]

The time to live for the cache store, in seconds.

Public Instance Methods

cache_delete_pk(pk) click to toggle source

Delete the cached object with the given primary key.

   # File lib/sequel/plugins/caching.rb
67 def cache_delete_pk(pk)
68   cache_delete(cache_key(pk))
69 end
cache_get_pk(pk) click to toggle source

Return the cached object with the given primary key, or nil if no such object is in the cache.

   # File lib/sequel/plugins/caching.rb
73 def cache_get_pk(pk)
74   cache_get(cache_key(pk))
75 end
cache_key(pk) click to toggle source

Return a key string for the given primary key.

   # File lib/sequel/plugins/caching.rb
83 def cache_key(pk)
84   raise(Error, 'no primary key for this record') unless pk.is_a?(Array) ? pk.all? : pk
85   "#{cache_key_prefix}:#{Array(pk).join(',')}"
86 end
cache_key_prefix() click to toggle source

Returns the prefix used to namespace this class in the cache.

   # File lib/sequel/plugins/caching.rb
78 def cache_key_prefix
79   to_s
80 end
set_cache_ttl(ttl) click to toggle source

Set the time to live for the cache store, in seconds (default is 3600, # so 1 hour).

   # File lib/sequel/plugins/caching.rb
91 def set_cache_ttl(ttl)
92   @cache_ttl = ttl
93 end

Private Instance Methods

cache_delete(ck) click to toggle source

Delete the entry with the matching key from the cache

    # File lib/sequel/plugins/caching.rb
107 def cache_delete(ck)
108   cache_op(:delete, ck)
109   nil
110 end
cache_get(ck) click to toggle source

Returned the cached object, or nil if the object was not in the cached

    # File lib/sequel/plugins/caching.rb
114 def cache_get(ck)
115   cache_op(:get, ck)
116 end
cache_op(meth, ck) click to toggle source

Access the cache using the given method and key, rescuing exceptions if necessary.

    # File lib/sequel/plugins/caching.rb
 98 def cache_op(meth, ck)
 99   if @cache_ignore_exceptions
100     @cache_store.public_send(meth, ck) rescue nil
101   else
102     @cache_store.public_send(meth, ck)
103   end
104 end
cache_set(ck, obj) click to toggle source

Set the object in the cache_store with the given key for cache_ttl seconds.

    # File lib/sequel/plugins/caching.rb
119 def cache_set(ck, obj)
120   @cache_store.set(ck, obj, @cache_ttl)
121 end
primary_key_lookup(pk) click to toggle source

Check the cache before a database lookup unless a hash is supplied.

Calls superclass method
    # File lib/sequel/plugins/caching.rb
124 def primary_key_lookup(pk)
125   ck = cache_key(pk)
126   unless obj = cache_get(ck)
127     if obj = super(pk)
128       cache_set(ck, obj)
129     end
130   end 
131   obj
132 end