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