Class: BloomFilter::CountingRedis
- Defined in:
- lib/bloomfilter/counting_redis.rb
Instance Method Summary collapse
- #clear ⇒ Object
- #delete(key) ⇒ Object
- #include?(*keys) ⇒ Boolean (also: #key?)
-
#initialize(opts = {}) ⇒ CountingRedis
constructor
A new instance of CountingRedis.
- #insert(key, ttl = nil) ⇒ Object (also: #[]=)
- #num_set ⇒ Object (also: #size)
Methods inherited from Filter
Constructor Details
#initialize(opts = {}) ⇒ CountingRedis
Returns a new instance of CountingRedis.
4 5 6 7 8 9 10 11 12 13 14 |
# File 'lib/bloomfilter/counting_redis.rb', line 4 def initialize(opts = {}) @opts = { :size => 100, :hashes => 4, :seed => Time.now.to_i, :bucket => 3, :ttl => false, :server => {} }.merge opts @db = ::Redis.new(@opts[:server]) end |
Instance Method Details
#clear ⇒ Object
45 46 47 |
# File 'lib/bloomfilter/counting_redis.rb', line 45 def clear @db.flushdb end |
#delete(key) ⇒ Object
26 27 28 29 30 31 32 |
# File 'lib/bloomfilter/counting_redis.rb', line 26 def delete(key) indexes_for(key).each do |idx| if @db.decr(idx).to_i <= 0 @db.del(idx) end end end |
#include?(*keys) ⇒ Boolean Also known as: key?
34 35 36 37 |
# File 'lib/bloomfilter/counting_redis.rb', line 34 def include?(*keys) indexes = keys.collect { |key| indexes_for(key) } not @db.mget(*indexes.flatten).include? nil end |
#insert(key, ttl = nil) ⇒ Object Also known as: []=
16 17 18 19 20 21 22 23 |
# File 'lib/bloomfilter/counting_redis.rb', line 16 def insert(key, ttl=nil) ttl = @opts[:ttl] if ttl.nil? indexes_for(key).each do |idx| @db.incr idx @db.expire(idx, ttl) if ttl end end |
#num_set ⇒ Object Also known as: size
40 41 42 |
# File 'lib/bloomfilter/counting_redis.rb', line 40 def num_set @db.keys("rbloom:*").size end |