Class: Prolly::Ps::Storage::Redis
- Inherits:
-
Object
- Object
- Prolly::Ps::Storage::Redis
- Defined in:
- lib/prolly/ps/storage/redis.rb
Instance Method Summary collapse
- #add(datum) ⇒ Object
- #count(rvs, options = {}) ⇒ Object
- #import(data) ⇒ Object
-
#initialize(data) ⇒ Redis
constructor
A new instance of Redis.
- #rand_vars ⇒ Object
- #reset ⇒ Object
- #uniq_vals(rv) ⇒ Object
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, = {}) 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_vars ⇒ Object
44 45 46 |
# File 'lib/prolly/ps/storage/redis.rb', line 44 def rand_vars @redis.smembers "pspace:rand_vars" end |
#reset ⇒ Object
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 |