class Moneta::Adapters::MemcachedNative
Memcached
backend (using gem memcached) @api public
Public Instance Methods
clear(options = {})
click to toggle source
(see Proxy#clear
)
# File lib/moneta/adapters/memcached/native.rb, line 87 def clear(options = {}) @backend.flush self end
close()
click to toggle source
(see Proxy#close
)
# File lib/moneta/adapters/memcached/native.rb, line 93 def close @backend.reset nil end
create(key, value, options = {})
click to toggle source
(see Defaults#create
)
# File lib/moneta/adapters/memcached/native.rb, line 77 def create(key, value, options = {}) expires = expires_value(options) Numeric === expires and expires = expires.to_i @backend.add(key, value, expires || 0, false) true rescue ::Memcached::ConnectionDataExists false end
delete(key, options = {})
click to toggle source
(see Proxy#delete
)
# File lib/moneta/adapters/memcached/native.rb, line 52 def delete(key, options = {}) value = @backend.get(key, false) @backend.delete(key) value rescue ::Memcached::NotFound nil end
increment(key, amount = 1, options = {})
click to toggle source
(see Proxy#increment
)
# File lib/moneta/adapters/memcached/native.rb, line 61 def increment(key, amount = 1, options = {}) result = if amount >= 0 @backend.increment(key, amount) else @backend.decrement(key, -amount) end # HACK: Throw error if applied to invalid value # see https://github.com/evan/memcached/issues/110 Integer((@backend.get(key, false) rescue 0)) if result == 0 result rescue ::Memcached::NotFound retry unless create(key, amount.to_s, options) amount end
load(key, options = {})
click to toggle source
(see Proxy#load
)
# File lib/moneta/adapters/memcached/native.rb, line 28 def load(key, options = {}) value = @backend.get(key, false) if value expires = expires_value(options, nil) unless expires == nil Numeric === expires and expires = expires.to_i @backend.set(key, value, expires || 0, false) end value end rescue ::Memcached::NotFound nil end
store(key, value, options = {})
click to toggle source
(see Proxy#store
)
# File lib/moneta/adapters/memcached/native.rb, line 43 def store(key, value, options = {}) # TTL must be Integer expires = expires_value(options) Numeric === expires and expires = expires.to_i @backend.set(key, value, expires || 0, false) value end