Class: Trifle::Stats::Driver::Redis
- Inherits:
-
Object
- Object
- Trifle::Stats::Driver::Redis
- Includes:
- Mixins::Packer
- Defined in:
- lib/trifle/stats/driver/redis.rb
Instance Attribute Summary collapse
-
#client ⇒ Object
Returns the value of attribute client.
-
#prefix ⇒ Object
Returns the value of attribute prefix.
-
#separator ⇒ Object
Returns the value of attribute separator.
Instance Method Summary collapse
- #description ⇒ Object
- #get(keys:) ⇒ Object
-
#inc(keys:, values:, count: 1, tracking_key: nil) ⇒ Object
rubocop:disable Metrics/MethodLength.
-
#initialize(client, prefix: 'trfl', system_tracking: true) ⇒ Redis
constructor
A new instance of Redis.
- #ping ⇒ Object
- #scan ⇒ Object
- #set(keys:, values:, count: 1, tracking_key: nil) ⇒ Object
- #system_data_for(key:, count: 1, tracking_key: nil) ⇒ Object
- #system_join_for(key:) ⇒ Object
Methods included from Mixins::Packer
Constructor Details
#initialize(client, prefix: 'trfl', system_tracking: true) ⇒ Redis
Returns a new instance of Redis.
12 13 14 15 16 17 |
# File 'lib/trifle/stats/driver/redis.rb', line 12 def initialize(client, prefix: 'trfl', system_tracking: true) @client = client @prefix = prefix @system_tracking = system_tracking @separator = '::' end |
Instance Attribute Details
#client ⇒ Object
Returns the value of attribute client.
10 11 12 |
# File 'lib/trifle/stats/driver/redis.rb', line 10 def client @client end |
#prefix ⇒ Object
Returns the value of attribute prefix.
10 11 12 |
# File 'lib/trifle/stats/driver/redis.rb', line 10 def prefix @prefix end |
#separator ⇒ Object
Returns the value of attribute separator.
10 11 12 |
# File 'lib/trifle/stats/driver/redis.rb', line 10 def separator @separator end |
Instance Method Details
#description ⇒ Object
19 20 21 |
# File 'lib/trifle/stats/driver/redis.rb', line 19 def description "#{self.class.name}(J)" end |
#get(keys:) ⇒ Object
62 63 64 65 66 67 68 69 70 71 |
# File 'lib/trifle/stats/driver/redis.rb', line 62 def get(keys:) results = client.pipelined do |pipeline| keys.each do |key| key.prefix = prefix pipeline.hgetall(key.join(separator)) end end results.map { |hash| self.class.unpack(hash: hash) } end |
#inc(keys:, values:, count: 1, tracking_key: nil) ⇒ Object
rubocop:disable Metrics/MethodLength
34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/trifle/stats/driver/redis.rb', line 34 def inc(keys:, values:, count: 1, tracking_key: nil) # rubocop:disable Metrics/MethodLength packed = self.class.pack(hash: values) client.pipelined do |pipeline| keys.each do |key| key.prefix = prefix pkey = key.join(separator) packed.each do |k, c| pipeline.hincrby(pkey, k, c) end track_system_data(pipeline, key, count, tracking_key) end end end |
#ping ⇒ Object
73 74 75 |
# File 'lib/trifle/stats/driver/redis.rb', line 73 def ping(*) [] end |
#scan ⇒ Object
77 78 79 |
# File 'lib/trifle/stats/driver/redis.rb', line 77 def scan(*) [] end |
#set(keys:, values:, count: 1, tracking_key: nil) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/trifle/stats/driver/redis.rb', line 49 def set(keys:, values:, count: 1, tracking_key: nil) packed = self.class.pack(hash: values) client.pipelined do |pipeline| keys.each do |key| key.prefix = prefix pkey = key.join(separator) pipeline.hmset(pkey, *packed) track_system_data(pipeline, key, count, tracking_key) end end end |
#system_data_for(key:, count: 1, tracking_key: nil) ⇒ Object
29 30 31 32 |
# File 'lib/trifle/stats/driver/redis.rb', line 29 def system_data_for(key:, count: 1, tracking_key: nil) tracking_key ||= key.key self.class.pack(hash: { count: count, keys: { tracking_key => count } }) end |