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

在 Redis 中执行 Lua 脚本时遇到错误。我的疑惑在于如何使用 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

如何完成这个任务?

点赞
用户3160475
用户3160475

使用Lua的unpack函数,例如:

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

但是,要根据范围从Sorted Set中执行批量删除,只需使用ZREMRANGEBYRANK

ZREMRANGEBYRANK test 0 -50
2017-03-29 08:26:24