summaryrefslogtreecommitdiff
path: root/priv/lua/redis_sm.lua
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2018-07-14 17:53:00 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2018-07-14 17:53:00 +0300
commit420e05fa0d5a159194ce3455d4ed2aa4f2256591 (patch)
tree0769759cf37018190d22e69f2eaa9ca0fc0a5575 /priv/lua/redis_sm.lua
parentMerge pull request #2525 from satish-olx/master (diff)
Clean up contributed code for Redis SM
Diffstat (limited to 'priv/lua/redis_sm.lua')
-rw-r--r--priv/lua/redis_sm.lua16
1 files changed, 16 insertions, 0 deletions
diff --git a/priv/lua/redis_sm.lua b/priv/lua/redis_sm.lua
new file mode 100644
index 00000000..2624fef1
--- /dev/null
+++ b/priv/lua/redis_sm.lua
@@ -0,0 +1,16 @@
+redis.replicate_commands()
+local cursor = redis.call('GET', KEYS[3]) or 0
+local scan_result = redis.call('HSCAN', KEYS[1], cursor, 'COUNT', ARGV[1])
+local newcursor = scan_result[1]
+local cursor = redis.call('SET', KEYS[3], newcursor)
+redis.call('EXPIRE', KEYS[3], 30)
+for key,value in ipairs(scan_result[2]) do
+ local uskey, sidkey = string.match(value, '(.*)||(.*)')
+ if uskey and sidkey then
+ redis.call('HDEL', uskey, sidkey)
+ redis.call('HDEL', KEYS[1], value)
+ else
+ redis.call('HDEL', KEYS[2], value)
+ end
+end
+return newcursor