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

3wabscal  于 2021-06-10  发布在  Redis
关注(0)|答案(1)|浏览(717)

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

local result = redis.call('lrange','test',0,5)
redis.call('ltrim','test',5,-1)
redis.call('rpush','test',result)
return result

我在这儿 lpop 5个元素,然后我需要 rpush 他们回来了。

redis.call('rpush','test',result)

抛出错误 Lua redis() command arguments must be strings or integers ,所以我需要像 ...result 在卢亚。

yks3o0rb

yks3o0rb1#

我想你可以用解包。

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"

相关问题