class RailsKvsDriver::RedisDriver::Driver

Public Class Methods

connect(driver_config) click to toggle source

connect with driver config. @param driver_config [Hash] driver config. @return [Object] instance of key-value store.

# File lib/rails_kvs_driver/redis_driver.rb, line 10
def self.connect(driver_config)
  Redis.new(host: driver_config[:host], port: driver_config[:port])
end

Public Instance Methods

add_sorted_set(key, member, score) click to toggle source

add sorted set to kvs. when the key doesn’t exist, it’s made newly. @note same as sorted set of redis. refer to redis.

@param key [String] key of sorted set. @param member [String] member of sorted set. @param score [Float] score of sorted set. @return [Boolean] result.

# File lib/rails_kvs_driver/redis_driver.rb, line 188
def add_sorted_set(key, member, score)
  @kvs_instance.zadd(safe_key(key), score, member)
end
count_list_value(key) click to toggle source

count value of the list. when the key doesn’t exist, return 0.

@param key [String] key of the list. @return [Integer] number. @abstract count value of the list.

# File lib/rails_kvs_driver/redis_driver.rb, line 61
def count_list_value(key)
  @kvs_instance.llen(safe_key(key))
end
count_sorted_set_member(key) click to toggle source

count members of sorted set @note same as sorted set of redis. refer to redis.

@param key [String] key of sorted set. @return [Integer] members num

# File lib/rails_kvs_driver/redis_driver.rb, line 197
def count_sorted_set_member(key)
  @kvs_instance.zcard(safe_key(key))
end
delete(key) click to toggle source

delete key from kvs. @return [Boolean] result.

# File lib/rails_kvs_driver/redis_driver.rb, line 31
def delete(key)
  (@kvs_instance.del(safe_key(key)) == 1)
end
delete_all() click to toggle source

delete all keys from kvs. @return [Boolean] result.

# File lib/rails_kvs_driver/redis_driver.rb, line 37
def delete_all
  keys    = @kvs_instance.keys(safe_key('*'))
  del_num = @kvs_instance.del(keys) if keys.length > 0

  (del_num == keys.length)
end
delete_list_value(key, value) click to toggle source

delete value from list.

@param key [String] key of the list. @param value [String] delete value. @abstract delete value from list.

# File lib/rails_kvs_driver/redis_driver.rb, line 70
def delete_list_value(key, value)
  @kvs_instance.lrem(safe_key(key), 0, value)
end
delete_list_value_at(key, index) click to toggle source

delete at index from list.

@param key [String] key of the list. @param index [Integer] index of the list. @abstract delete at index from list.

# File lib/rails_kvs_driver/redis_driver.rb, line 79
def delete_list_value_at(key, index)
  back_list = get_list_values(key, index+1)

  if index > 0
    @kvs_instance.ltrim(safe_key(key), 0, index-1)
  else
    delete(key)
  end

  back_list.each {|value| push_list_last(key, value) }
end
get(key) click to toggle source

get value from kvs. @param key [String] key. @return [String] value. when doesn’t exist, nil.

# File lib/rails_kvs_driver/redis_driver.rb, line 17
def get(key)
  @kvs_instance.get(safe_key(key))
end
get_list_keys() click to toggle source

get all keys of existed list.

@return [Array<String>] keys. @abstract get all keys of existed list.

# File lib/rails_kvs_driver/redis_driver.rb, line 95
def get_list_keys
  keys_with_type('list')
end
get_list_value(key, index) click to toggle source

get value from index of the list. when the key doesn’t exist, return nil.

@param key [String] key of the list. @param index [Integer] index of the list. @return [String] value. @abstract get value from index of the list.

# File lib/rails_kvs_driver/redis_driver.rb, line 106
def get_list_value(key, index)
  @kvs_instance.lindex(safe_key(key), index)
end
get_list_values(key, start = 0, stop = -1) click to toggle source

get values from index of the list. @example get_list_value(:key) => get all. @example get_list_value(:key, 5, 10) => 5~10 return total 6 values.

@param key [String] key of the list. @param start [Integer] start index of the list. @param stop [Integer] end index of the list. @return [Array<String>] value. @abstract get values from index of the list.

# File lib/rails_kvs_driver/redis_driver.rb, line 119
def get_list_values(key, start = 0, stop = -1)
  @kvs_instance.lrange(safe_key(key), start, stop)
end
get_sorted_set(key, start = 0, stop = -1, reverse=false) click to toggle source

get array of sorted set. @note same as sorted set of redis. refer to redis.

@param key [String] key of sorted set. @param start [Integer] start index @param stop [Integer] stop index @param reverse [Boolean] order by desc @return [Array<String, Float>>] array of the member and score. when doesn’t exist, nil.

# File lib/rails_kvs_driver/redis_driver.rb, line 209
def get_sorted_set(key, start = 0, stop = -1, reverse=false)
  if reverse
    result = @kvs_instance.zrevrange(safe_key(key), start, stop, with_scores: true)
  else
    result = @kvs_instance.zrange(safe_key(key), start, stop, with_scores: true)
  end

  return (result.length == 0) ? nil : result
end
get_sorted_set_keys() click to toggle source

get all sorted_set keys. @return [Array<String>] array of key names.(only having sorted_set)

# File lib/rails_kvs_driver/redis_driver.rb, line 221
def get_sorted_set_keys
  keys_with_type('zset')
end
get_sorted_set_score(key, member) click to toggle source

get the score of member. @note same as sorted set of redis. refer to redis.

@param key [String] key of sorted set. @param member [String] member of sorted set. @return [Float] score of member.

# File lib/rails_kvs_driver/redis_driver.rb, line 231
def get_sorted_set_score(key, member)
  @kvs_instance.zscore(safe_key(key), member)
end
increment_sorted_set(key, member, score) click to toggle source

increment score of member from sorted set. @note same as sorted set of redis. refer to redis.

@param key [String] key of sorted set. @param member [String] member of sorted set. @param score [Float] increment score. @return [Float] value after increment

# File lib/rails_kvs_driver/redis_driver.rb, line 242
def increment_sorted_set(key, member, score)
  @kvs_instance.zincrby(safe_key(key), score, member)
end
keys() click to toggle source

get all keys from kvs. @return [Array<String>] array of key names.(only having string value)

# File lib/rails_kvs_driver/redis_driver.rb, line 46
def keys
  keys_with_type('string')
end
pop_list_first(key) click to toggle source

pop value from first of the list. when the key doesn’t exist or is empty. return nil.

@param key [String] key of the list. @return [String] value of the key. @abstract pop value from first of the list.

# File lib/rails_kvs_driver/redis_driver.rb, line 151
def pop_list_first(key)
  @kvs_instance.lpop(safe_key(key))
end
pop_list_last(key) click to toggle source

pop value from first of the list. when the key doesn’t exist or is empty. return nil.

@param key [String] key of the list. @return [String] value of the key. @abstract pop value from last of the list.

# File lib/rails_kvs_driver/redis_driver.rb, line 161
def pop_list_last(key)
  @kvs_instance.rpop(safe_key(key))
end
push_list_first(key, value) click to toggle source

push value to first of the list. when the key doesn’t exist, it’s made newly list.

@param key [String] key of list. @param value [String] push value. @return [Integer] length of list after push. @abstract push value to first of the list.

# File lib/rails_kvs_driver/redis_driver.rb, line 130
def push_list_first(key, value)
  @kvs_instance.lpush(safe_key(key), value)
end
push_list_last(key, value) click to toggle source

push value to last of the list. when the key doesn’t exist, it’s made newly list.

@param key [String] key of list. @param value [String] push value. @return [Integer] length of list after push. @abstract push value to last of the list.

# File lib/rails_kvs_driver/redis_driver.rb, line 141
def push_list_last(key, value)
  @kvs_instance.rpush(safe_key(key), value)
end
remove_sorted_set(key, member) click to toggle source

remove sorted set from kvs. This function doesn’t delete a key. @note same as sorted set of redis. refer to redis.

@param key [String] key of sorted set. @param member [String] member of sorted set. @return [Boolean] result.

# File lib/rails_kvs_driver/redis_driver.rb, line 253
def remove_sorted_set(key, member)
  @kvs_instance.zrem(safe_key(key), member)
end
set(key, value) click to toggle source

set value to kvs. @param key [String] key. @param value [String] value. @return [Boolean] result

# File lib/rails_kvs_driver/redis_driver.rb, line 25
def set(key, value)
  @kvs_instance.set(safe_key(key), value)
end
set_list_value(key, index, value) click to toggle source

set value to index of the list.

@param key [String] key of the list. @param index [Integer] index of the list. @param value [String] set value.

# File lib/rails_kvs_driver/redis_driver.rb, line 170
def set_list_value(key, index, value)
  @kvs_instance.lset(safe_key(key), index, value)
end

Private Instance Methods

keys_with_type(type) click to toggle source

get keys with type.

@param [String] type of key. @return [Array<String>] array of keys.

# File lib/rails_kvs_driver/redis_driver.rb, line 269
def keys_with_type(type)
  result      = Array.new
  pattern     = safe_key('*')
  header_len  = pattern.length - 1

  @kvs_instance.keys(pattern).each do |key|
    result.push key[header_len .. -1] if @kvs_instance.type(key) == type
  end

  return result
end
safe_key(key) click to toggle source

get safe key name with @driver_config @param key [String] key @return [String] safe key name

# File lib/rails_kvs_driver/redis_driver.rb, line 261
def safe_key(key)
  "#{@driver_config[:namespace]}::#{key}"
end