• MOVE key db
    • 返回值
    • 代码示例

    MOVE key db

    可用版本: >= 1.0.0
    时间复杂度: O(1)

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

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

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

    返回值

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

    代码示例

    1. # key 存在于当前数据库
    2.  
    3. redis> SELECT 0 # redis默认使用数据库 0,为了清晰起见,这里再显式指定一次。
    4. OK
    5.  
    6. redis> SET song "secret base - Zone"
    7. OK
    8.  
    9. redis> MOVE song 1 # 将 song 移动到数据库 1
    10. (integer) 1
    11.  
    12. redis> EXISTS song # song 已经被移走
    13. (integer) 0
    14.  
    15. redis> SELECT 1 # 使用数据库 1
    16. OK
    17.  
    18. redis:1> EXISTS song # 证实 song 被移到了数据库 1 (注意命令提示符变成了"redis:1",表明正在使用数据库 1)
    19. (integer) 1
    20.  
    21.  
    22. # 当 key 不存在的时候
    23.  
    24. redis:1> EXISTS fake_key
    25. (integer) 0
    26.  
    27. redis:1> MOVE fake_key 0 # 试图从数据库 1 移动一个不存在的 key 到数据库 0,失败
    28. (integer) 0
    29.  
    30. redis:1> select 0 # 使用数据库0
    31. OK
    32.  
    33. redis> EXISTS fake_key # 证实 fake_key 不存在
    34. (integer) 0
    35.  
    36.  
    37. # 当源数据库和目标数据库有相同的 key 时
    38.  
    39. redis> SELECT 0 # 使用数据库0
    40. OK
    41. redis> SET favorite_fruit "banana"
    42. OK
    43.  
    44. redis> SELECT 1 # 使用数据库1
    45. OK
    46. redis:1> SET favorite_fruit "apple"
    47. OK
    48.  
    49. redis:1> SELECT 0 # 使用数据库0,并试图将 favorite_fruit 移动到数据库 1
    50. OK
    51.  
    52. redis> MOVE favorite_fruit 1 # 因为两个数据库有相同的 key,MOVE 失败
    53. (integer) 0
    54.  
    55. redis> GET favorite_fruit # 数据库 0 的 favorite_fruit 没变
    56. "banana"
    57.  
    58. redis> SELECT 1
    59. OK
    60.  
    61. redis:1> GET favorite_fruit # 数据库 1 的 favorite_fruit 也是
    62. "apple"