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