如何在Lua脚本中将…数组传递给redis rpush?
我需要在redis中随时迭代ring,我有一个Lua脚本:如何在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
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)
抛出errorLua 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"