Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua Redis服务器端脚本-ZREM一次包含多个值_Lua_Redis_Server Side - Fatal编程技术网

Lua Redis服务器端脚本-ZREM一次包含多个值

Lua Redis服务器端脚本-ZREM一次包含多个值,lua,redis,server-side,Lua,Redis,Server Side,我正在构建一个Redis服务器端脚本,我缺乏Lua经验,这让我有点为难 基本上有一个较大的“main”排序集(包含~1000个值),我想删除在较小的“remove”集中找到的所有键(包含~100个值)。想想sdiffstore,但是“main”集合中的成员分数很重要 一个简单的例子: "main" ZADD main 6 "one" ZADD main 7 "two" ZADD main 8 "three" ZADD main 9 "four" ZADD main 10 "five" "rem

我正在构建一个Redis服务器端脚本,我缺乏Lua经验,这让我有点为难

基本上有一个较大的“main”排序集(包含~1000个值),我想删除在较小的“remove”集中找到的所有键(包含~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 )
我尝试了多次语法迭代,但都没有成功。有什么想法吗

我希望避免将“remove”成员转换成某种字符串或循环,并一次删除一个成员


谢谢

如果我正确理解您的问题,您应该能够使用
解包
功能:

local temp = redis.call('smembers','remove')    
redis.call('zrem','main', unpack(temp))
unpack
将表“解包”到其成员中