class Moneta::Adapters::LMDB

LMDB backend @api public

Constants

PUT_FLAGS

Attributes

backend[R]
db[R]

Public Class Methods

new(options) click to toggle source

@param [Hash] options @option options [String] :dir Environment directory @option options [::LMDB::Environment] :backend Use existing backend instance @option options [String or nil] :db Database name

# File lib/moneta/adapters/lmdb.rb, line 20
def initialize(options)
  db = options.delete(:db)
  @backend = options.delete(:backend) ||
    begin
      raise ArgumentError, 'Option :dir is required' unless dir = options.delete(:dir)
      FileUtils.mkpath(dir)
      ::LMDB.new(dir, options)
    end

  @db = @backend.database(db, :create => true)
end

Public Instance Methods

clear(options = {}) click to toggle source

(see Moneta::Proxy#clear)

# File lib/moneta/adapters/lmdb.rb, line 59
def clear(options = {})
  @db.clear
  self
end
close() click to toggle source

(see Moneta::Proxy#close)

# File lib/moneta/adapters/lmdb.rb, line 87
def close
  @backend.close
  nil
end
create(key, value, options = {}) click to toggle source

(see Moneta::Defaults#create)

# File lib/moneta/adapters/lmdb.rb, line 75
def create(key, value, options = {})
  @backend.transaction do
    if @db.get(key)
      false
    else
      @db.put(key, value, Utils.only(options, *PUT_FLAGS))
      true
    end
  end
end
delete(key, options = {}) click to toggle source

(see Moneta::Proxy#delete)

# File lib/moneta/adapters/lmdb.rb, line 49
def delete(key, options = {})
  @backend.transaction do
    if value = @db.get(key)
      @db.delete(key)
      value
    end
  end
end
increment(key, amount = 1, options = {}) click to toggle source

(see Moneta::Proxy#increment)

# File lib/moneta/adapters/lmdb.rb, line 65
def increment(key, amount = 1, options = {})
  @backend.transaction do
    value = @db.get(key)
    value = Utils.to_int(value) + amount
    @db.put(key, value.to_s, Utils.only(options, *PUT_FLAGS))
    value
  end
end
key?(key, options = {}) click to toggle source

(see Moneta::Proxy#key?)

# File lib/moneta/adapters/lmdb.rb, line 33
def key?(key, options = {})
  !@db.get(key).nil?
end
load(key, options = {}) click to toggle source

(see Moneta::Proxy#load)

# File lib/moneta/adapters/lmdb.rb, line 38
def load(key, options = {})
  @db.get(key)
end
store(key, value, options = {}) click to toggle source

(see Moneta::Proxy#store)

# File lib/moneta/adapters/lmdb.rb, line 43
def store(key, value, options = {})
  @db.put(key, value, Utils.only(options, *PUT_FLAGS))
  value
end