Module: Cache

Defined in:
lib/gems/memcache-client-1.5.0/lib/memcache_util.rb

Overview

A utility wrapper around the MemCache client to simplify cache access. All methods silently ignore MemCache errors.

Class Method Summary collapse

Class Method Details

.add(key, value, expiry = 0) ⇒ Object

Sets value in the cache at key, with an optional expiry time in seconds. If key already exists in cache, returns nil.



54
55
56
57
58
59
60
61
62
63
# File 'lib/gems/memcache-client-1.5.0/lib/memcache_util.rb', line 54

def self.add(key, value, expiry = 0)
  start_time = Time.now
  response = CACHE.add key, value, expiry
  elapsed = Time.now - start_time
  ActiveRecord::Base.logger.debug('MemCache Add (%0.6f)  %s' % [elapsed, key])
  (response == "STORED\r\n") ? value : nil
rescue MemCache::MemCacheError => err
  ActiveRecord::Base.logger.debug "MemCache Error: #{err.message}"
  nil
end

.delete(key, delay = nil) ⇒ Object

Deletes key from the cache in delay seconds.



68
69
70
71
72
73
74
75
76
77
78
# File 'lib/gems/memcache-client-1.5.0/lib/memcache_util.rb', line 68

def self.delete(key, delay = nil)
  start_time = Time.now
  CACHE.delete key, delay
  elapsed = Time.now - start_time
  ActiveRecord::Base.logger.debug('MemCache Delete (%0.6f)  %s' %
                                  [elapsed, key])
  nil
rescue MemCache::MemCacheError => err
  ActiveRecord::Base.logger.debug "MemCache Error: #{err.message}"
  nil
end

.get(key, expiry = 0) ⇒ Object

Returns the object at key from the cache if successful, or nil if either the object is not in the cache or if there was an error attermpting to access the cache.

If there is a cache miss and a block is given the result of the block will be stored in the cache with optional expiry, using the add method rather than set.



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/gems/memcache-client-1.5.0/lib/memcache_util.rb', line 16

def self.get(key, expiry = 0)
  start_time = Time.now
  value = CACHE.get key
  elapsed = Time.now - start_time
  ActiveRecord::Base.logger.debug('MemCache Get (%0.6f)  %s' % [elapsed, key])
  if value.nil? and block_given? then
    value = yield
    add key, value, expiry
  end
  value
rescue MemCache::MemCacheError => err
  ActiveRecord::Base.logger.debug "MemCache Error: #{err.message}"
  if block_given? then
    value = yield
    put key, value, expiry
  end
  value
end

.put(key, value, expiry = 0) ⇒ Object

Sets value in the cache at key, with an optional expiry time in seconds.



39
40
41
42
43
44
45
46
47
48
# File 'lib/gems/memcache-client-1.5.0/lib/memcache_util.rb', line 39

def self.put(key, value, expiry = 0)
  start_time = Time.now
  CACHE.set key, value, expiry
  elapsed = Time.now - start_time
  ActiveRecord::Base.logger.debug('MemCache Set (%0.6f)  %s' % [elapsed, key])
  value
rescue MemCache::MemCacheError => err
  ActiveRecord::Base.logger.debug "MemCache Error: #{err.message}"
  nil
end

.resetObject

Resets all connections to MemCache servers.



83
84
85
86
87
# File 'lib/gems/memcache-client-1.5.0/lib/memcache_util.rb', line 83

def self.reset
  CACHE.reset
  ActiveRecord::Base.logger.debug 'MemCache Connections Reset'
  nil
end