MOVE

Posted winnerren

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MOVE相关的知识,希望对你有一定的参考价值。

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,为了清晰起见,这里再显式指定一次。
OK
127.0.0.1:6379> SET song "secret base - Zone"
OK
127.0.0.1:6379> MOVE song 1   #将song移动到数据库1
(integer) 1
127.0.0.1:6379> EXISTS song    #song已经被移走
(integer) 0
127.0.0.1:6379> SELECT 1         #使用数据库1
OK
127.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) 0
127.0.0.1:6379[1]> MOVE fake_key 0    #试图从数据库1移动一个不存在的key到数据库0,失败
(integer) 0
127.0.0.1:6379[1]> SELECT 0               #使用数据库0
OK
127.0.0.1:6379> EXISTS fake_Key         #证实fake_key不存在
(integer) 0
127.0.0.1:6379> SELECT 0                    #使用数据库0
OK
127.0.0.1:6379> SET favorite_fruit "banana"
OK
127.0.0.1:6379> SELECT 1                     #使用数据库1
OK
127.0.0.1:6379[1]> SET favorite_fruit "apple"
OK
127.0.0.1:6379[1]> SELECT 0                 #使用数据库0,并试图将favorite_fruit移动到数据库1
OK
127.0.0.1:6379> MOVE favorite_fruit 1     #因为两个数据库有相同的key,MOVE失败
(integer) 0
127.0.0.1:6379> GET favorite_fruit           #数据库0的favorite_fruit 没变
"banana"
127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]> GET favorite_fruit       #数据库1的favorite_fruit也是
"apple" 

 

以上是关于MOVE的主要内容,如果未能解决你的问题,请参考以下文章

使用 std::thread 函数 C++11 将指针作为参数传递

283. (Move Zeroes)移动零

koltin将已经存在的文件和目录,move其他文件夹下的代码

调用 Directory.Move(..., ...) 时拒绝访问路径异常

独特的 ptr 和 move 语义

delphi中move函数的正确理解(const和var一样,都是传地址,所以Move是传地址,而恰恰不是传值)太精彩了 good