module Redlics::Counter
Counter
class
Constants
- CONTEXT
Context constant for given class.
Public Instance Methods
count(*args, &block)
click to toggle source
Count for a given event and object id with options.
@param *args [Array] list of arguments for count @return [Array] list of counted granularities
# File lib/redlics/counter.rb, line 15 def count(*args, &block) return count_with_block(&block) if block_given? return count_with_hash(args.first) if args.first.is_a?(Hash) count_with_args(*args) end
Private Instance Methods
count_by_hash(options)
click to toggle source
Count by hash.
@param options [Hash] configuration options @return [Array] result of pipelined redis commands
# File lib/redlics/counter.rb, line 62 def count_by_hash(options) granularity = options[:granularity] key = Key.name(CONTEXT, options[:event], granularity, options[:past], { id: options[:id], bucketized: true }) Redlics.redis do |conn| conn.pipelined do |redis| redis.hincrby(key[0], key[1], 1) redis.expire(key[0], (options[:expiration_for] && options[:expiration_for][granularity] || Redlics.config.counter_expirations[granularity]).to_i) end end end
count_by_key(options)
click to toggle source
Count by key.
@param options [Hash] configuration options @return [Array] result of pipelined redis commands
# File lib/redlics/counter.rb, line 77 def count_by_key(options) granularity = options[:granularity] key = Key.name(CONTEXT, options[:event], granularity, options[:past], { id: options[:id], bucketized: false }) Redlics.redis do |conn| conn.pipelined do |redis| redis.incr(key) redis.expire(key, (options[:expiration_for] && options[:expiration_for][granularity] || Redlics.config.counter_expirations[granularity]).to_i) end end end
count_with_args(*args)
click to toggle source
Count with hash.
@param *args [Array] list of arguments for count @return [Array] list of counted granularities
# File lib/redlics/counter.rb, line 52 def count_with_args(*args) options = args.last.instance_of?(Hash) ? args.pop : {} options.merge!(event: args[0]) count_with_hash(options) end
count_with_block() { |options = open_struct| ... }
click to toggle source
Count with hash.
@param [&Block] a block with configuration options @return [Array] list of counted granularities
# File lib/redlics/counter.rb, line 43 def count_with_block yield options = OpenStruct.new count_with_hash(options.to_h) end
count_with_hash(options)
click to toggle source
Count with hash.
@param options [Hash] configuration options @return [Array] list of counted granularities
# File lib/redlics/counter.rb, line 27 def count_with_hash(options) options[:id] = options[:id].to_i unless options[:id].nil? Granularity.validate(CONTEXT, options[:granularity]).each do |granularity| opt = options.clone.merge(granularity: granularity) if Redlics.config.bucket && opt[:id] count_by_hash(opt) else count_by_key(opt) end end end