Class: Muninn::Cache::VersionCounter
- Inherits:
-
Object
- Object
- Muninn::Cache::VersionCounter
- Defined in:
- lib/muninn/cache/version_counter.rb
Constant Summary collapse
- KEY_PREFIX =
"cache:version".freeze
Class Method Summary collapse
- .build_key(namespace:, scope_name:, scope_id:) ⇒ Object
- .bump(namespace:, scope_name:, scope_id:, expires_in: nil) ⇒ Object
- .get(namespace:, scope_name:, scope_id:) ⇒ Object
Class Method Details
.build_key(namespace:, scope_name:, scope_id:) ⇒ Object
36 37 38 |
# File 'lib/muninn/cache/version_counter.rb', line 36 def self.build_key(namespace:, scope_name:, scope_id:) [KEY_PREFIX, scope_name, scope_id, namespace].join(":") end |
.bump(namespace:, scope_name:, scope_id:, expires_in: nil) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/muninn/cache/version_counter.rb', line 17 def self.bump(namespace:, scope_name:, scope_id:, expires_in: nil) Muninn.instrument("version_counter.bump", namespace: namespace, scope_name: scope_name, scope_id: scope_id) do key = build_key(namespace: namespace, scope_name: scope_name, scope_id: scope_id) if expires_in results = Muninn.redis.pipelined do |pipe| pipe.incr(key) pipe.expire(key, expires_in) end results.first else Muninn.redis.incr(key) end end rescue Redis::BaseError => e Rails.logger.warn "[Muninn] Redis error in VersionCounter.bump: #{e.}" nil end |
.get(namespace:, scope_name:, scope_id:) ⇒ Object
8 9 10 11 12 13 14 15 |
# File 'lib/muninn/cache/version_counter.rb', line 8 def self.get(namespace:, scope_name:, scope_id:) Muninn.instrument("version_counter.get", namespace: namespace, scope_name: scope_name, scope_id: scope_id) do Muninn.redis.get(build_key(namespace: namespace, scope_name: scope_name, scope_id: scope_id)) end&.then { |v| v ? v.to_i : 0 }.to_i rescue Redis::BaseError => e Rails.logger.warn "[Muninn] Redis error in VersionCounter.get: #{e.}" 0 end |