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"