Redis 遷移 DB; move key db


redis 移動 DB

MOVE key db
將當前數據庫的 key 移動到給定的數據庫 db 當中。
如果當前數據庫(源數據庫)和給定數據庫(目標數據庫)有相同名字的給定 key ,或者 key 不存在於當前數據庫,那么 MOVE 沒有任何效果。
因此,也可以利用這一特性,將 MOVE 當作鎖 (locking) 原語 (primitive)。

返回值:
移動成功返回 1 ,失敗則返回 0

示例:(Redis 默認有 16 個DB, 0 - 15

1、當 key 存在於當前數據庫

redis> SELECT 0   # redis默認使用數據庫 0,為了清晰起見,這里再顯式指定一次。
OK

redis> SET song "secret base - Zone"
OK

redis> MOVE song 1   # 將 song 移動到數據庫 1
(integer) 1

redis> EXISTS song   # song 已經被移走
(integer) 0

redis> SELECT 1   # 使用數據庫 1
OK

redis:1> EXISTS song   # 證實 song 被移到了數據庫 1 ( 注意命令提示符變成了"redis:1",表明正在使用數據庫 1 )
(integer) 1

2、當 key 不存在的時候

redis:1> EXISTS fake_key
(integer) 0

redis:1> MOVE fake_key 0   # 試圖從數據庫 1 移動一個不存在的 key 到數據庫 0,失敗
(integer) 0

redis:1> select 0   # 使用數據庫0
OK

redis> EXISTS fake_key   # 證實 fake_key 不存在
(integer) 0

3、當源數據庫和目標數據庫有相同的 key 時

redis> SELECT 0   # 使用數據庫0
OK
redis> SET favorite_fruit "aaaaa"
OK

redis> SELECT 1   # 使用數據庫1
OK
redis:1> SET favorite_fruit "bbbbb"
OK

redis:1> SELECT 0   # 使用數據庫0,並試圖將 favorite_fruit 移動到數據庫 1
OK

redis> MOVE favorite_fruit 1   # 因為兩個數據庫有相同的 key,MOVE 失敗
(integer) 0

redis> GET favorite_fruit   # 數據庫 0 的 favorite_fruit 沒變 "aaaaa"

redis> SELECT 1
OK

redis:1> GET favorite_fruit   # 數據庫 1 的 favorite_fruit 也是 "bbbbb"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM