0

Redis MOVE 命令

Posted by 撒得一地 on 2016年7月3日 in Redis教程

语法

MOVE key db

说明

将当前数据库的 key 移动到给定的数据库 db 当中。

如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定 key ,或者 key 不存在于当前数据库,那么 MOVE 没有任何效果。

因此,也可以利用这一特性,将 MOVE 当作锁(locking)原语(primitive)。

可用版本:

>= 1.0.0

时间复杂度:

O(1)

返回值:

移动成功返回 1 ,失败则返回 0 。

# key 存在于当前数据库

# redis默认使用数据库 0,为了清晰起见,这里再显式指定一次。 
redis> SELECT 0  
OK

redis> SET song "secret base - Zone"
OK

# 将 song 移动到数据库 1
redis> MOVE song 1
(integer) 1

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

# 使用数据库 1
redis> SELECT 1 
OK

# 证实 song 被移到了数据库 1 (注意命令提示符变成了"redis:1",表明正在使用数据库 1)
redis:1> EXISTS song 
(integer) 1

# 当 key 不存在的时候

redis:1> EXISTS fake_key
(integer) 0

# 试图从数据库 1 移动一个不存在的 key 到数据库 0,失败
redis:1> MOVE fake_key 0 
(integer) 0

 # 使用数据库0
redis:1> select 0 
OK

# 证实 fake_key 不存在
redis> EXISTS fake_key 
(integer) 0


# 当源数据库和目标数据库有相同的 key 时

# 使用数据库0
redis> SELECT 0 
OK

redis> SET favorite_fruit "banana"
OK

# 使用数据库1
redis> SELECT 1 
OK

redis:1> SET favorite_fruit "apple"
OK

# 使用数据库0,并试图将 favorite_fruit 移动到数据库 1
redis:1> SELECT 0  
OK

# 因为两个数据库有相同的 key,MOVE 失败
redis> MOVE favorite_fruit 1 
(integer) 0

# 数据库 0 的 favorite_fruit 没变
redis> GET favorite_fruit                   
"banana"

redis> SELECT 1
OK

# 数据库 1 的 favorite_fruit 也是
redis:1> GET favorite_fruit                 
"apple"

标签:

上一篇:

下一篇:

相关推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注

4 + 9 = ?

网站地图|XML地图

Copyright © 2015-2017 技术拉近你我! All rights reserved.
闽ICP备15015576号-1,版权所有©psz.