class RailsKvsDriver::RedisDriver::Driver
Public Class Methods
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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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
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 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 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 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 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 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 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 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
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
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