如何在redis.call中使用Lua表?

时间:2017-03-29 08:14:32

标签: lua redis

在Redis中执行Lua脚本时在Redis中出错。我的困惑是如何使用Redis数组回复制作第二个redis.call。我的用例是批量删除排序集成员。

127.0.0.1:6380> eval "local list = redis.call('zrevrange','test', 50, -1) return redis.call('zrem', 'test', list)" 0
(error) ERR Error running script (call to f_aa5dddbbb039b576aba5f46a99a268339ca2e9d5): @user_script:1: @user_script: 1: Lua redis() command arguments must be strings or integers 

如何做到这一点?

1 个答案:

答案 0 :(得分:1)

使用Lua的unpack - 即:

local list = redis.call('zrevrange','test', 50, -1) return
redis.call('zrem', 'test', unpack(list))

但是,要根据范围从排序集执行批量删除,只需使用ZREMRANGEBYRANK

ZREMRANGEBYRANK test 0 -50