class Sidekiq::Batching::Redis
Constants
- PLUCK_SCRIPT
Public Instance Methods
batch_size(name)
click to toggle source
# File lib/sidekiq/batching/redis.rb, line 30 def batch_size(name) redis { |conn| conn.llen(ns(name)) } end
batches()
click to toggle source
# File lib/sidekiq/batching/redis.rb, line 34 def batches redis { |conn| conn.smembers(ns('batches')) } end
delete(name)
click to toggle source
# File lib/sidekiq/batching/redis.rb, line 63 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)
click to toggle source
# File lib/sidekiq/batching/redis.rb, line 24 def enqueued?(name, msg) redis do |conn| conn.sismember(unique_messages_key(name), msg) end end
get_last_execution_time(name)
click to toggle source
# File lib/sidekiq/batching/redis.rb, line 44 def get_last_execution_time(name) redis { |conn| conn.get(ns("last_execution_time:#{name}")) } end
lock(name)
click to toggle source
# File lib/sidekiq/batching/redis.rb, line 52 def lock(name) redis do |conn| id = ns("lock:#{name}") conn.setnx(id, true).tap do |obtained| if obtained conn.expire(id, Sidekiq::Batching::Config.lock_ttl) end end end end
pluck(name, limit)
click to toggle source
# File lib/sidekiq/batching/redis.rb, line 38 def pluck(name, limit) keys = [ns(name), unique_messages_key(name)] args = [limit] redis { |conn| conn.eval PLUCK_SCRIPT, keys, args } end
push_msg(name, msg, remember_unique = false)
click to toggle source
# File lib/sidekiq/batching/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(unique_messages_key(name), msg) if remember_unique end end end
set_last_execution_time(name, time)
click to toggle source
# File lib/sidekiq/batching/redis.rb, line 48 def set_last_execution_time(name, time) redis { |conn| conn.set(ns("last_execution_time:#{name}"), time.to_json) } end
Private Instance Methods
ns(key = nil)
click to toggle source
# File lib/sidekiq/batching/redis.rb, line 77 def ns(key = nil) "batching:#{key}" end
redis(&block)
click to toggle source
# File lib/sidekiq/batching/redis.rb, line 81 def redis(&block) Sidekiq.redis(&block) end
unique_messages_key(name)
click to toggle source
# File lib/sidekiq/batching/redis.rb, line 73 def unique_messages_key name ns("#{name}:unique_messages") end