Module: Lowkiq::Script

Defined in:
lib/lowkiq/script.rb

Constant Summary collapse

ALL =
{
  hmove: <<-LUA,
  zremhset: <<-LUA
    local source = KEYS[1]
    local destination = KEYS[2]
    local member = ARGV[1]
    local score = redis.call('zscore', source, member)
    if score then
      redis.call('zrem', source, member)
      redis.call('hset', destination, member, score)
    end
  LUA
}.transform_values { |v| { sha: Digest::SHA1.hexdigest(v), source: v } }.freeze

Class Method Summary collapse

Class Method Details

.hmove(redis, source, destination, key) ⇒ Object



34
35
36
# File 'lib/lowkiq/script.rb', line 34

def hmove(redis, source, destination, key)
  redis.evalsha ALL[:hmove][:sha], keys: [source, destination], argv: [key]
end

.load!(redis) ⇒ Object



28
29
30
31
32
# File 'lib/lowkiq/script.rb', line 28

def load!(redis)
  ALL.each do |_, item|
    redis.script(:load, item[:source])
  end
end

.zremhset(redis, source, destination, member) ⇒ Object



38
39
40
# File 'lib/lowkiq/script.rb', line 38

def zremhset(redis, source, destination, member)
  redis.evalsha ALL[:zremhset][:sha], keys: [source, destination], argv: [member]
end