class Recommendify::SparseMatrix
Public Class Methods
new(opts={})
click to toggle source
# File lib/recommendify/sparse_matrix.rb, line 3 def initialize(opts={}) @opts = opts end
Public Instance Methods
[](x,y)
click to toggle source
# File lib/recommendify/sparse_matrix.rb, line 11 def [](x,y) k_get(key(x,y)) end
[]=(x,y,v)
click to toggle source
# File lib/recommendify/sparse_matrix.rb, line 15 def []=(x,y,v) v == 0 ? k_del(key(x,y)) : k_set(key(x,y), v) end
incr(x,y)
click to toggle source
# File lib/recommendify/sparse_matrix.rb, line 19 def incr(x,y) k_incr(key(x,y)) end
redis_key()
click to toggle source
# File lib/recommendify/sparse_matrix.rb, line 7 def redis_key [@opts.fetch(:redis_prefix), @opts.fetch(:key)].join(":") end
Private Instance Methods
k_del(key)
click to toggle source
# File lib/recommendify/sparse_matrix.rb, line 33 def k_del(key) Recommendify.redis.hdel(redis_key, key) end
k_delall(*keys)
click to toggle source
OPTIMIZE: use scripting/lua in redis 2.6
# File lib/recommendify/sparse_matrix.rb, line 46 def k_delall(*keys) Recommendify.redis.hkeys(redis_key).each do |iikey| next unless (iikey.split(":") & keys).size > 0 Recommendify.redis.hdel(redis_key, iikey) end end
k_get(key)
click to toggle source
# File lib/recommendify/sparse_matrix.rb, line 37 def k_get(key) Recommendify.redis.hget(redis_key, key).to_f end
k_incr(key)
click to toggle source
# File lib/recommendify/sparse_matrix.rb, line 41 def k_incr(key) Recommendify.redis.hincrby(redis_key, key, 1) end
k_set(key, val)
click to toggle source
# File lib/recommendify/sparse_matrix.rb, line 29 def k_set(key, val) Recommendify.redis.hset(redis_key, key, val) end
key(x,y)
click to toggle source
# File lib/recommendify/sparse_matrix.rb, line 25 def key(x,y) [x,y].sort.join(":") end