如何在Redis中将值从一个列表复制到另一个列表?

amb*_*amb 4 redis

我有一个带有一些值的Redis列表

LRANGE LIST 0 -1
> 1
> 2
> 3
Run Code Online (Sandbox Code Playgroud)

我想把RPUSH这些值放到另一个列表中.如何才能做到这一点?我试图做到这一点的MULTIEXEC,但没有结果.

Did*_*zia 7

服务器端Lua脚本比WATCH/MULTI/EXEC块更方便实现这种操作.

下面是一个脚本示例,它带有两个列表(源和目标)作为参数,以及两个在源列表中定义范围的整数.然后它将相应的项目推送到目标列表.

> rpush foo 1 2 3 4
(integer) 4
> rpush bar x
(integer) 1
> eval "local res = redis.call( 'lrange', KEYS[1], ARGV[1], ARGV[2] ); return redis.call( 'rpush', KEYS[2], unpack(res) ); "  2  foo bar 0 -1
(integer) 5
> lrange bar 0 -1
1) "x"
2) "1"
3) "2"
4) "3"
5) "4"
Run Code Online (Sandbox Code Playgroud)


小智 4

如果你想将键移动到一个新的键,你可以使用RENAME命令,唯一会改变键名的RENAME命令