class Prolly::Ps::Storage::Redis

Public Class Methods

new(data) click to toggle source
# File lib/prolly/ps/storage/redis.rb, line 11
def initialize(data)
  @redis = ::Redis.new(host: "localhost", port: "6379")
  reset
  import(data) unless data.nil?
end

Public Instance Methods

add(datum) click to toggle source
# File lib/prolly/ps/storage/redis.rb, line 25
def add(datum)
  datum.each do |rv, val|
    @redis.sadd "pspace:rand_vars", rv
    @redis.sadd "pspace:uniq_vals:#{rv}", val

    @redis.PFADD "pspace:count:#{rv}", datum.object_id.to_i
    @redis.PFADD "pspace:count:#{rv}=#{val}", datum.object_id.to_i

  end
end
count(rvs, options = {}) click to toggle source
# File lib/prolly/ps/storage/redis.rb, line 36
def count(rvs, options = {})
  if rvs.kind_of?(Array)
    @redis.pfcount *rvs.map { |rv| "pspace:count:#{rv}" }
  elsif rvs.kind_of?(Hash)
    @redis.pfcount *rvs.map { |rv, val| "pspace:count:#{rv}=#{val}" }
  end
end
import(data) click to toggle source
# File lib/prolly/ps/storage/redis.rb, line 21
def import(data)
  data.each { |datum| add(datum) }
end
rand_vars() click to toggle source
# File lib/prolly/ps/storage/redis.rb, line 44
def rand_vars
  @redis.smembers "pspace:rand_vars"
end
reset() click to toggle source
# File lib/prolly/ps/storage/redis.rb, line 17
def reset
  @redis.keys("pspace:*").each { |k| @redis.del k }
end
uniq_vals(rv) click to toggle source
# File lib/prolly/ps/storage/redis.rb, line 48
def uniq_vals(rv)
  @redis.smembers "pspace:uniq_vals:#{rv}"
end