System to keep record of an amount for a concrete duration.
With Time Window Drop Collector you can define a maximun time you want to keep the record.
You can also keep record for different keys.
gem install time_window_drop_collector
twdc =
TimeWindowDropCollector.new do
client <client>, <client_opts> # underneeth client
window <seconds> # in seconds
slices <num of slices> # one slice every minute
end
These are the default values
twdc =
TimeWindowDropCollector.new do
client :memcache, "localhost:11211" # underneeth client
window 600 # in seconds
slices 10 # one slice every minute
end
Can be:
- :memcache
- :redis
- :rails
- :mock
twdc.drop( "id1" )
twdc.drop( "id1" )
twdc.drop( "id2" )
ts = twdc.drop( "id1", 4 )
twdc.count( "id1" ) # => 6
twdc.count( "id2" ) # => 1
twdc.pick( ts, "id1", 2)
twdc.count( "id1" ) # => 4
# after 10 minutes
twdc.count( "id1" ) # => 0
Now we have implementation for 3 diferent underneeth cache clients.
It uses the Dalli Client for memcache.
twdc =
TimeWindowDropCollector.new do
client :memcache, "localhost:11211"
end
It uses the Rails.cache
accesible
twdc =
TimeWindowDropCollector.new do
client :rails_cache
end
twdc =
TimeWindowDropCollector.new do
client :redis, { :host => "host", :port => "port" }
end
You can set the ENV_VAR TWDC_DEBUG
and debug log will put to the stdout.