【发布时间】:2015-09-04 19:36:14
【问题描述】:
我正在构建一个 Redis 服务器端脚本,但缺乏 Lua 经验让我有点卡住了。
基本上有一个大的“主”排序集(包含约 1,000 个值),我想删除在较小的“删除”集(包含约 100 个值)中找到的任何键。想想 sdiffstore,但“主”集中的成员分数很重要。
一个简单的例子:
"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 )
我已经尝试了多次我的语法迭代,但都无济于事。有任何想法吗?
我希望避免将“删除”成员转换为某种字符串或循环,并且一次删除一个成员。
谢谢
【问题讨论】:
标签: lua redis server-side