Class: Prolly::Ps::Storage::Redis

Inherits:
Object
  • Object
show all
Defined in:
lib/prolly/ps/storage/redis.rb

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ Redis

Returns a new instance of Redis.



11
12
13
14
15
# 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

Instance Method Details

#add(datum) ⇒ Object



25
26
27
28
29
30
31
32
33
34
# 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 = {}) ⇒ Object



36
37
38
39
40
41
42
# 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) ⇒ Object



21
22
23
# File 'lib/prolly/ps/storage/redis.rb', line 21

def import(data)
  data.each { |datum| add(datum) }
end

#rand_varsObject



44
45
46
# File 'lib/prolly/ps/storage/redis.rb', line 44

def rand_vars
  @redis.smembers "pspace:rand_vars"
end

#resetObject



17
18
19
# File 'lib/prolly/ps/storage/redis.rb', line 17

def reset
  @redis.keys("pspace:*").each { |k| @redis.del k }
end

#uniq_vals(rv) ⇒ Object



48
49
50
# File 'lib/prolly/ps/storage/redis.rb', line 48

def uniq_vals(rv)
  @redis.smembers "pspace:uniq_vals:#{rv}"
end