class Sidekiq::Grouping::Redis
Constants
- PLUCK_SCRIPT
Public Instance Methods
batch_size(name)
click to toggle source
# File lib/sidekiq/grouping/redis.rb, line 41 def batch_size(name) redis_call(:llen, ns(name)) end
batches()
click to toggle source
# File lib/sidekiq/grouping/redis.rb, line 45 def batches redis_call(:smembers, ns("batches")) end
delete(name)
click to toggle source
# File lib/sidekiq/grouping/redis.rb, line 86 def delete(name) redis do |conn| redis_connection_call(conn, :del, ns("last_execution_time:#{name}")) redis_connection_call(conn, :del, ns(name)) redis_connection_call(conn, :srem, ns("batches"), name) end end
enqueued?(name, msg)
click to toggle source
# File lib/sidekiq/grouping/redis.rb, line 34 def enqueued?(name, msg) member = redis_call(:sismember, unique_messages_key(name), msg) return member if member.is_a?(TrueClass) || member.is_a?(FalseClass) member != 0 end
get_last_execution_time(name)
click to toggle source
# File lib/sidekiq/grouping/redis.rb, line 66 def get_last_execution_time(name) redis_call(:get, ns("last_execution_time:#{name}")) end
lock(name)
click to toggle source
# File lib/sidekiq/grouping/redis.rb, line 76 def lock(name) redis_call( :set, ns("lock:#{name}"), "true", nx: true, ex: Sidekiq::Grouping::Config.lock_ttl ) end
pluck(name, limit)
click to toggle source
# File lib/sidekiq/grouping/redis.rb, line 49 def pluck(name, limit) if new_redis_client? redis_call( :eval, PLUCK_SCRIPT, 2, ns(name), unique_messages_key(name), limit ) else keys = [ns(name), unique_messages_key(name)] args = [limit] redis_call(:eval, PLUCK_SCRIPT, keys, args) end end
push_msg(name, msg, remember_unique: false)
click to toggle source
# File lib/sidekiq/grouping/redis.rb, line 18 def push_msg(name, msg, remember_unique: false) redis do |conn| conn.multi do |pipeline| sadd = pipeline.respond_to?(:sadd?) ? :sadd? : :sadd redis_connection_call(pipeline, sadd, ns("batches"), name) redis_connection_call(pipeline, :rpush, ns(name), msg) if remember_unique redis_connection_call( pipeline, sadd, unique_messages_key(name), msg ) end end end end
set_last_execution_time(name, time)
click to toggle source
# File lib/sidekiq/grouping/redis.rb, line 70 def set_last_execution_time(name, time) redis_call( :set, ns("last_execution_time:#{name}"), time.to_json ) end
Private Instance Methods
ns(key = nil)
click to toggle source
# File lib/sidekiq/grouping/redis.rb, line 100 def ns(key = nil) "batching:#{key}" end
unique_messages_key(name)
click to toggle source
# File lib/sidekiq/grouping/redis.rb, line 96 def unique_messages_key(name) ns("#{name}:unique_messages") end