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