module RestGW2::Cache
Constants
- EXPIRES_IN
- LRU_SIZE
Public Instance Methods
default(logger)
click to toggle source
# File lib/rest-gw2/server/cache.rb, line 9 def default logger @cache ||= Cache.pick(logger) end
lru_cache(logger)
click to toggle source
# File lib/rest-gw2/server/cache.rb, line 33 def lru_cache logger require 'lru_redux' logger.info("LRU cache size: #{LRU_SIZE}") cache = LruRedux::ThreadSafeCache.new(LRU_SIZE) cache.extend(Module.new{ def fetch key # original fetch could deadlock self[key] || self[key] = yield end }) cache rescue LoadError => e logger.debug("Skip LRU cache because: #{e}") nil end
memcache(logger)
click to toggle source
# File lib/rest-gw2/server/cache.rb, line 17 def memcache logger require 'dalli' client = Dalli::Client.new(nil, :expires_in => EXPIRES_IN) File.open(IO::NULL, 'w') do |null| Dalli.logger = Logger.new(null) client.alive! Dalli.logger = logger end logger.info("Memcached connected to #{client.version.keys.join(', ')}") client.extend(RestCore::DalliExtension) client rescue LoadError, Dalli::RingError => e logger.debug("Skip memcached because: #{e}") nil end
pick(logger)
click to toggle source
# File lib/rest-gw2/server/cache.rb, line 13 def pick logger memcache(logger) || lru_cache(logger) end