我正在构建一个Redis服务器端脚本,而我缺乏Lua经验让我有点陷入困境。
基本上有一个很大的"主要"排序集(包含~1,000个值),我想删除在较小的"删除"中找到的任何键。 set(包含~100个值)。想想sdiffstore,但是" main"设置很重要。
一个简单的例子:
"main"
ZADD main 6 "one"
ZADD main 7 "two"
ZADD main 8 "three"
ZADD main 9 "four"
ZADD main 10 "five"
"remove"
ZADD remove "two"
ZADD remove "four"
desired output (stored in a sorted set):
6 "one"
8 "three"
10 "five"
所以在lua服务器端脚本:
- 这有效
redis.call('zrem','main', 'two','four')
- 这不是
local temp = redis.call('smembers','remove')
redis.call('zrem','main', temp )
我尝试过多次迭代我的语法无济于事。有任何想法吗?
我希望避免转换"删除"成员进入某种字符串或循环,并一次删除一个成员。
由于
答案 0 :(得分:5)
如果我正确理解您的问题,您应该能够使用unpack
功能:
local temp = redis.call('smembers','remove')
redis.call('zrem','main', unpack(temp))
unpack
将"解包"把桌子放进去。