Class: Sidekiq::Grouping::Redis
- Inherits:
-
Object
- Object
- Sidekiq::Grouping::Redis
- Defined in:
- lib/sidekiq/grouping/redis.rb
Constant Summary collapse
- PLUCK_SCRIPT =
<<-SCRIPT local pluck_values = redis.call('lrange', KEYS[1], 0, ARGV[1] - 1) redis.call('ltrim', KEYS[1], ARGV[1], -1) for k, v in pairs(pluck_values) do redis.call('srem', KEYS[2], v) end return pluck_values SCRIPT
Instance Method Summary collapse
- #batch_size(name) ⇒ Object
- #batches ⇒ Object
- #delete(name) ⇒ Object
- #enqueued?(name, msg) ⇒ Boolean
- #get_last_execution_time(name) ⇒ Object
- #lock(name) ⇒ Object
- #pluck(name, limit) ⇒ Object
- #push_msg(name, msg, remember_unique = false) ⇒ Object
- #set_last_execution_time(name, time) ⇒ Object
Instance Method Details
#batch_size(name) ⇒ Object
30 31 32 |
# File 'lib/sidekiq/grouping/redis.rb', line 30 def batch_size(name) redis { |conn| conn.llen(ns(name)) } end |
#batches ⇒ Object
34 35 36 |
# File 'lib/sidekiq/grouping/redis.rb', line 34 def batches redis { |conn| conn.smembers(ns('batches')) } end |
#delete(name) ⇒ Object
59 60 61 62 63 64 65 |
# File 'lib/sidekiq/grouping/redis.rb', line 59 def delete(name) redis do |conn| conn.del(ns("last_execution_time:#{name}")) conn.del(ns(name)) conn.srem(ns('batches'), name) end end |
#enqueued?(name, msg) ⇒ Boolean
24 25 26 27 28 |
# File 'lib/sidekiq/grouping/redis.rb', line 24 def enqueued?(name, msg) redis do |conn| conn.sismember((name), msg) end end |
#get_last_execution_time(name) ⇒ Object
44 45 46 |
# File 'lib/sidekiq/grouping/redis.rb', line 44 def get_last_execution_time(name) redis { |conn| conn.get(ns("last_execution_time:#{name}")) } end |
#lock(name) ⇒ Object
52 53 54 55 56 57 |
# File 'lib/sidekiq/grouping/redis.rb', line 52 def lock(name) redis do |conn| id = ns("lock:#{name}") conn.set(id, true, nx: true, ex: Sidekiq::Grouping::Config.lock_ttl) end end |
#pluck(name, limit) ⇒ Object
38 39 40 41 42 |
# File 'lib/sidekiq/grouping/redis.rb', line 38 def pluck(name, limit) keys = [ns(name), (name)] args = [limit] redis { |conn| conn.eval PLUCK_SCRIPT, keys, args } end |
#push_msg(name, msg, remember_unique = false) ⇒ Object
14 15 16 17 18 19 20 21 22 |
# File 'lib/sidekiq/grouping/redis.rb', line 14 def push_msg(name, msg, remember_unique = false) redis do |conn| conn.multi do conn.sadd(ns('batches'), name) conn.rpush(ns(name), msg) conn.sadd((name), msg) if remember_unique end end end |
#set_last_execution_time(name, time) ⇒ Object
48 49 50 |
# File 'lib/sidekiq/grouping/redis.rb', line 48 def set_last_execution_time(name, time) redis { |conn| conn.set(ns("last_execution_time:#{name}"), time.to_json) } end |