2013-02-21 69 views
2

我有一些价值复制列表值到另一个列表

LRANGE LIST 0 -1 
> 1 
> 2 
> 3 

一个Redis的列表,我想RPUSH这些值到另一个列表。如何才能做到这一点?我试图用MULTIEXEC来做,但没有结果。

回答

1

如果要移动的关键是一个新的密钥,您可以用重命名命令,唯一会改变的键名RENAME COMMAND

+0

谢谢。在这种情况下重命名对我来说已经足够了。 – amb 2013-02-21 09:54:56

3

服务器端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" 
+0

这是一个很好的答案。然而,'RENAME'正是我所期待的。无论如何,我会保留这个书签,因为我相信我会在将来使用它。 – amb 2013-02-21 09:56:10

+0

正如我所料,我用这个答案在Redis中做了一些脚本。谢谢Didier! – amb 2013-03-26 14:04:31

相关问题