MOVE key db
将当前数据库的key移动到给定的数据库db当中。
如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定key,或者key不存在于当前数据库,那么MOVE没有任何效果。
因此,也可以利用这一特性,将MOVE当作锁(locking)原语(primitive)。
版本:>=1.0.0
时间复杂度:
O(1)
返回值:
移动成功返回1,失败则返回0.
# key 存在于当前数据库127.0.0.1:6379> SELECT 0 #redis默认使用数据库0,为了清晰起见,这里再显式指定一次。OK127.0.0.1:6379> SET song "secret base - Zone"OK127.0.0.1:6379> MOVE song 1 #将song移动到数据库1(integer) 1127.0.0.1:6379> EXISTS song #song已经被移走(integer) 0127.0.0.1:6379> SELECT 1 #使用数据库1OK127.0.0.1:6379[1]> EXISTS song #证实song被移到了数据库1(注意命令提示符变成了“xxx【1】”,表明正在使用数据库1)(integer) 1#当key不存在的时候127.0.0.1:6379[1]> EXISTS fake_key(integer) 0127.0.0.1:6379[1]> MOVE fake_key 0 #试图从数据库1移动一个不存在的key到数据库0,失败(integer) 0127.0.0.1:6379[1]> SELECT 0 #使用数据库0OK127.0.0.1:6379> EXISTS fake_Key #证实fake_key不存在(integer) 0127.0.0.1:6379> SELECT 0 #使用数据库0OK127.0.0.1:6379> SET favorite_fruit "banana"OK127.0.0.1:6379> SELECT 1 #使用数据库1OK127.0.0.1:6379[1]> SET favorite_fruit "apple"OK127.0.0.1:6379[1]> SELECT 0 #使用数据库0,并试图将favorite_fruit移动到数据库1OK127.0.0.1:6379> MOVE favorite_fruit 1 #因为两个数据库有相同的key,MOVE失败(integer) 0127.0.0.1:6379> GET favorite_fruit #数据库0的favorite_fruit 没变"banana"127.0.0.1:6379> SELECT 1OK127.0.0.1:6379[1]> GET favorite_fruit #数据库1的favorite_fruit也是"apple"