Module: Lowkiq::Script

Defined in:
lib/lowkiq/script.rb

Constant Summary collapse

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

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