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 rpush?_Redis_Lua_Node Redis - Fatal编程技术网

如何在Lua脚本中将…数组传递给redis rpush?

如何在Lua脚本中将…数组传递给redis rpush?,redis,lua,node-redis,Redis,Lua,Node Redis,我需要在redis中随时迭代ring,我有一个Lua脚本: local result=redis.call('lrange','test',0,5) redis.call('ltrim','test',5,-1) 调用('rpush','test',result) 返回结果 这里我lpop5个元素,然后我需要rpush5个元素 redis.call('rpush','test',result) 抛出errorLua redis()命令参数必须是字符串或整数,因此我需要像Lua中的…resul

我需要在redis中随时迭代ring,我有一个Lua脚本:

local result=redis.call('lrange','test',0,5)
redis.call('ltrim','test',5,-1)
调用('rpush','test',result)
返回结果
这里我
lpop
5个元素,然后我需要
rpush
5个元素

redis.call('rpush','test',result)
抛出error
Lua redis()命令参数必须是字符串或整数,因此我需要像Lua中的
…result
这样的JavaScript。

我想您可以使用它

local result = redis.call('lrange','test',0,5)
redis.call('ltrim','test',5,-1)
redis.call('rpush','test',unpack(result))
return result
调用
lrange
时,如果要保持列表大小不变,可能需要使用
4
而不是
5
。下面是使用
4
执行时的示例演示

127.0.0.1:6379> rpush test a b c d e f
(integer) 6
127.0.0.1:6379> "EVAL" "local result = redis.call('lrange','test',0,4) redis.call('ltrim','test',5,-1) redis.call('rpush','test',unpack(result)) return result" "0"
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
127.0.0.1:6379> lrange test 0 -1
1) "f"
2) "a"
3) "b"
4) "c"
5) "d"
6) "e"