2013-02-21 42 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

相關問題