class Tally::Daily
Contains all keys set for the given day
Can be used to iterate over a large amount of smembers in the daily set
Public Instance Methods
daily_key()
click to toggle source
# File lib/tally/daily.rb, line 7 def daily_key "#{ Tally.config.prefix }@#{ day_key }" end
Private Instance Methods
all_keys()
click to toggle source
# File lib/tally/daily.rb, line 13 def all_keys @keys ||= build_keys_from_redis end
build_keys_from_redis()
click to toggle source
# File lib/tally/daily.rb, line 17 def build_keys_from_redis result = [] cursor = "" scan = scan_from_redis while cursor != "0" result << scan.last cursor = scan.first scan = scan_from_redis(cursor: cursor) end result.flatten end
day_key()
click to toggle source
# File lib/tally/daily.rb, line 33 def day_key @day_key ||= day.strftime(Tally.config.date_format) end
entry_regex()
click to toggle source
# File lib/tally/daily.rb, line 37 def entry_regex @entry_regex ||= Regexp.new("(?<record>[^:]+:[\\d]+)?:?(?<key>[^:]+)") end
scan_from_redis(cursor: "0")
click to toggle source
# File lib/tally/daily.rb, line 41 def scan_from_redis(cursor: "0") Tally.redis do |conn| conn.sscan(daily_key, cursor, match: scan_key, count: 25) end end
scan_key()
click to toggle source
# File lib/tally/daily.rb, line 47 def scan_key @scan_key ||= if key.present? && record.present? "#{ record.model_name.i18n_key }:#{ record.id }:#{ key }" elsif key.present? && type.present? "#{ type }:*:#{ key }" elsif record.present? "#{ record.model_name.i18n_key }:#{ record.id }:*" elsif type.present? "#{ type }:*:*" elsif key.present? "*#{ key }" else "*" end end