class Moneta::Adapters::LMDB

LMDB backend @api public

Constants

PUT_FLAGS

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 (‘moneta’) Database name

Calls superclass method Moneta::Adapter::new
# File lib/moneta/adapters/lmdb.rb, line 24
def initialize(options = {})
  super
  @db = backend.database(config.db, create: true)
end

Public Instance Methods

clear(options = {}) click to toggle source

(see Proxy#clear)

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

(see Proxy#close)

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

(see Defaults#create)

# File lib/moneta/adapters/lmdb.rb, line 71
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 Proxy#delete)

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

(see Proxy#each_key)

# File lib/moneta/adapters/lmdb.rb, line 89
def each_key
  return enum_for(:each_key) { @db.size } unless block_given?

  @db.cursor do |cursor|
    while record = cursor.next
      yield record[0]
    end
  end

  self
end
increment(key, amount = 1, options = {}) click to toggle source

(see Proxy#increment)

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

(see Proxy#key?)

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

(see Proxy#load)

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

(see Proxy#merge!)

Calls superclass method Moneta::Defaults#merge!
# File lib/moneta/adapters/lmdb.rb, line 112
def merge!(pairs, options = {})
  backend.transaction { super }
end
slice(*keys, **options) click to toggle source

(see Proxy#slice)

Calls superclass method Moneta::Defaults#slice
# File lib/moneta/adapters/lmdb.rb, line 107
def slice(*keys, **options)
  backend.transaction { super }
end
store(key, value, options = {}) click to toggle source

(see Proxy#store)

# File lib/moneta/adapters/lmdb.rb, line 40
def store(key, value, options = {})
  @db.put(key, value, Utils.only(options, *PUT_FLAGS))
  value
end
values_at(*keys, **options) click to toggle source

(see Proxy#values_at)

Calls superclass method Moneta::Defaults#values_at
# File lib/moneta/adapters/lmdb.rb, line 102
def values_at(*keys, **options)
  backend.transaction { super }
end