# MOVE
**MOVE key db**
將當前數據庫的 `key` 移動到給定的數據庫 `db` 當中。
如果當前數據庫(源數據庫)和給定數據庫(目標數據庫)有相同名字的給定 `key` ,或者 `key` 不存在于當前數據庫,那么 `MOVE` 沒有任何效果。
因此,也可以利用這一特性,將 [MOVE](#move) 當作鎖(locking)原語(primitive)。
**可用版本:**
>= 1.0.0
**時間復雜度:**
O(1)
**返回值:**
移動成功返回 `1` ,失敗則返回 `0` 。
```
# 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
# 當 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
# 當源數據庫和目標數據庫有相同的 key 時
redis> SELECT 0 # 使用數據庫0
OK
redis> SET favorite_fruit "banana"
OK
redis> SELECT 1 # 使用數據庫1
OK
redis:1> SET favorite_fruit "apple"
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 沒變
"banana"
redis> SELECT 1
OK
redis:1> GET favorite_fruit # 數據庫 1 的 favorite_fruit 也是
"apple"
```
- Redis 教程
- Redis 簡介
- Redis 安裝
- Redis 配置
- Redis 數據類型
- Redis 命令
- Redis 數據備份與恢復
- Redis 安全
- Redis 性能測試
- Redis 客戶端連接
- Redis 管道技術
- Redis 分區
- Java 使用 Redis
- Java 使用 Redis
- PHP 使用 Redis
- PHP 使用 Redis
- Redis 命令參考
- Key(鍵)
- DEL
- DUMP
- EXISTS
- EXPIRE
- EXPIREAT
- KEYS
- MIGRATE
- MOVE
- OBJECT
- PERSIST
- PEXPIRE
- PEXPIREAT
- PTTL
- RANDOMKEY
- RENAME
- RENAMENX
- RESTORE
- SORT
- TYPE
- SCAN
- String(字符串)
- APPEND
- BITCOUNT
- BITOP
- DECR
- DECRBY
- GET
- GETBIT
- GETRANGE
- GETSET
- INCR
- INCRBY
- INCRBYFLOAT
- MGET
- MSET
- MSETNX
- PSETEX
- SET
- SETBIT
- SETEX
- SETNX
- SETRANGE
- STRLEN
- Hash(哈希表)
- HDEL
- HEXISTS
- HGET
- HGETALL
- HINCRBY
- HINCRBYFLOAT
- HKEYS
- HLEN
- HMGET
- HMSET
- HSET
- HSETNX
- HVALS
- HSCAN
- List(列表)
- BLPOP
- BRPOP
- BRPOPLPUSH
- LINDEX
- LINSERT
- LLEN
- LPOP
- LPUSH
- LRANGE
- LREM
- LSET
- LTRIM
- RPOP
- RPOPLPUSH
- RPUSH
- RPUSHX
- Set(集合)
- SADD
- SCARD
- SDIFF
- SDIFFSTORE
- SINTER
- SINTER
- SINTERSTORE
- SISMEMBER
- SMEMBERS
- SMOVE
- SPOP
- SRANDMEMBER
- SREM
- SUNION
- SUNIONSTORE
- SSCAN
- SortedSet(有序集合)
- ZADD
- ZCARD
- ZCOUNT
- ZINCRBY
- ZRANGE
- ZRANGEBYSCORE
- ZRANK
- ZREM
- ZREMRANGEBYRANK
- ZREMRANGEBYSCORE
- ZREVRANGE
- ZREVRANGEBYSCORE
- ZREVRANK
- ZSCORE
- ZUNIONSTORE
- ZINTERSTORE
- ZSCAN
- Pub/Sub(發布/訂閱)
- PSUBSCRIBE
- PUBLISH
- PUBSUB
- PUNSUBSCRIBE
- SUBSCRIBE
- UNSUBSCRIBE
- Transaction(事務)
- DISCARD
- EXEC
- MULTI
- UNWATCH
- WATCH
- Script(腳本)
- EVAL
- EVALSHA
- SCRIPT EXISTS
- SCRIPT FLUSH
- SCRIPT KILL
- SCRIPT LOAD
- Connection(連接)
- AUTH
- ECHO
- PING
- QUIT
- SELECT
- Server(服務器)
- BGREWRITEAOF
- BGSAVE
- CLIENT GETNAME
- CLIENT KILL
- CLIENT LIST
- CLIENT SETNAME
- CONFIG GET
- CONFIG RESETSTAT
- CONFIG REWRITE
- CONFIG SET
- DBSIZE
- DEBUG OBJECT
- DEBUG SEGFAULT
- FLUSHALL
- FLUSHDB
- INFO
- LASTSAVE
- MONITOR
- PSYNC
- SAVE
- SHUTDOWN
- SLAVEOF
- SLOWLOG
- SYNC
- TIME
- 免責聲明