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