class Kyototycoon::Client

Constants

VERSION

Attributes

connection[R]
host[R]
port[R]
timeout_ms[R]

Public Class Methods

new(host, port, timeout_ms = 0) click to toggle source
# File lib/kyototycoon/client.rb, line 9
def initialize(host, port, timeout_ms = 0)
  @host = host
  @port = port
  @timeout_ms = timeout_ms
  @connection = Connection.new(@host, @port, @timeout_ms)
end

Public Instance Methods

close() click to toggle source
# File lib/kyototycoon/client.rb, line 20
def close
  raise "connection doesn't open" unless @connection && @connection.is_open
  @connection.close
end
get(key, dbid=0) click to toggle source
# File lib/kyototycoon/client.rb, line 29
def get(key, dbid=0)
  get_bulk([key], dbid)[key]
end
get_bulk(keys, dbid=0) click to toggle source
# File lib/kyototycoon/client.rb, line 56
def get_bulk(keys, dbid=0)
  return {} if keys.empty?
  raise "connection closed" unless @connection.is_open

  records = []
  keys.each do |k|
    records.push(Record.new(k, nil, nil, dbid))
  end
  results = @connection.get(records)
  return {} if results == nil
  results.inject({}) {|map, rec| map[rec.key] = rec.value; map;}
end
open() click to toggle source
# File lib/kyototycoon/client.rb, line 16
def open
  @connection.open
end
remove(key) click to toggle source
# File lib/kyototycoon/client.rb, line 33
def remove(key)
  remove_bulk([key]) == 1 ? true : false
end
remove_bulk(keys, dbid=0) click to toggle source
# File lib/kyototycoon/client.rb, line 69
def remove_bulk(keys, dbid=0)
  return 0 if keys.empty?
  raise "connection closed" unless @connection.is_open

  records = []
  keys.each do |k|
    records.push(Record.new(k, nil, nil, dbid))
  end
  @connection.remove(records)
end
script(method, key, value) click to toggle source
# File lib/kyototycoon/client.rb, line 37
def script(method, key, value)
  script_bulk(method, { key => value } )
end
script_bulk(method, keyvalues) click to toggle source
# File lib/kyototycoon/client.rb, line 80
def script_bulk(method, keyvalues)
  raise "connection closed" unless @connection.is_open

  records = []
  keyvalues.each do |k, v|
    records.push(Record.new(k, v))
  end
  results = @connection.script(method, records)
  return {} if results == nil
  results.inject({}) {|map, rec| map[rec.key] = rec.value; map;}
end
set(key, value, expire=Record::MAX_EXPIRE_SECONDS, dbid=0) click to toggle source
# File lib/kyototycoon/client.rb, line 25
def set(key, value, expire=Record::MAX_EXPIRE_SECONDS, dbid=0)
  set_bulk({key => [value, expire]}, dbid) == 1 ? true : false
end
set_bulk(keyvalues, dbid = 0) click to toggle source
# File lib/kyototycoon/client.rb, line 41
def set_bulk(keyvalues, dbid = 0)
  return 0 if keyvalues.empty?
  raise "connection closed" unless @connection.is_open

  records = []
  keyvalues.each do |k, v|
    if v.is_a?(Array)
      records.push(Record.new(k, v[0], v[1].to_i, dbid))
    else
      records.push(Record.new(k, v, Record::MAX_EXPIRE_SECONDS, dbid))
    end
  end
  @connection.set(records)
end