• Redis教程7-键(key)常用命令使用参考2


    1.MOVE

    MOVE key db

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

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

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

    可用版本:>= 1.0.0

    时间复杂度:O(1)

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

    127.0.0.1:6379> keys name    // 默认db 0数据库
    (empty list or set)
    127.0.0.1:6379> set name redis666    // 设置name
    OK
    127.0.0.1:6379> get name
    "redis666"
    127.0.0.1:6379> select 1    // 切换到db 1
    OK
    127.0.0.1:6379[1]> get name    // db 1中没有name
    (nil)
    127.0.0.1:6379[1]> select 0    // 切换回db 0
    OK
    127.0.0.1:6379> move name 1    // move name -> db 1
    (integer) 1
    127.0.0.1:6379> exists name    // db 0中name已经没了
    (integer) 0
    127.0.0.1:6379> select 1
    OK
    127.0.0.1:6379[1]> get name    // db 1中有了刚才的name
    "redis666"
    127.0.0.1:6379[1]>

    从db 1 move一个不存在的key到db 0

    127.0.0.1:6379[1]> keys *    // db 1中只有name
    1) "name"
    127.0.0.1:6379[1]> move age 0    // move age 到 db 0, 返回0, 不成功
    (integer) 0

    当db 1 和 db 0 都有相同key的时候

    127.0.0.1:6379[1]> keys *    // db 1中有name
    1) "name"
    127.0.0.1:6379[1]> select 0    // 切换到 db 0
    OK
    127.0.0.1:6379> get name    // db 0 中没有name
    (nil)
    127.0.0.1:6379> set name redis888    // set 一个 name
    OK
    127.0.0.1:6379> move name 1     // 从db 0 move 到 db 1, 不成功, 因为db0 和 db 1 都有name
    (integer) 0

    2.PERSIST

    PERSIST key

    移除给定 key 的生存时间,将这个 key 从『易失的』(带生存时间 key )转换成『持久的』(一个不带生存时间、永不过期的 key )。

    可用版本:>= 2.2.0

    时间复杂度:O(1)

    返回值:

    当生存时间移除成功时,返回 1 .

    如果 key 不存在或 key 没有设置生存时间,返回 0 。

    127.0.0.1:6379> get name
    "redis888"
    127.0.0.1:6379> expire name 5000    // 设置name过期时间5000s
    (integer) 1
    127.0.0.1:6379> ttl name    // 剩余过期时间4997s
    (integer) 4997
    127.0.0.1:6379> persist name    // 移除过期时间的限制
    (integer) 1
    127.0.0.1:6379> ttl name    // 剩余过期时间已经没了
    (integer) -1
    127.0.0.1:6379> persist name    // 移除一个没有过期时间的, 返回0
    (integer) 0
    127.0.0.1:6379> persist age    // 移除一个不存在的key, 返回0
    (integer) 0
    127.0.0.1:6379>

    3.PEXPIRE

    PEXPIRE key milliseconds

    这个命令和 EXPIRE 命令的作用类似,但是它以毫秒为单位设置 key 的生存时间,而不像 EXPIRE 命令那样,以秒为单位

    可用版本:>= 2.6.0

    时间复杂度:O(1)

    返回值:

    设置成功,返回 1
    key 不存在或设置失败,返回 0
    127.0.0.1:6379> pexpire name 20000    // 设置name的过期时间20s
    (integer) 1
    127.0.0.1:6379> ttl name    // ttl查看剩余过期时间, 查看的是s
    (integer) 18
    127.0.0.1:6379> pttl name    // pttl查看剩余过期时间, 查看的是ms
    (integer) 12623
    127.0.0.1:6379> ttl name
    (integer) 6
    127.0.0.1:6379> ttl name    // 已经过期了
    (integer) -2
    127.0.0.1:6379> get name    // name不存在了
    (nil)
    127.0.0.1:6379> keys name    // name不存在
    (empty list or set)
    127.0.0.1:6379>

    4.PEXPIREAT

    PEXPIREAT key milliseconds-timestamp

    这个命令和 EXPIRE, PEXPIRE 命令类似,但它以毫秒为单位设置 key 的过期 unix 时间戳,而不是像 EXPIRE 那样,以秒为单位(PEXPIRE为毫秒为单位)。

    可用版本:>= 2.6.0

    时间复杂度:O(1)

    返回值:

    如果生存时间设置成功,返回 1 。

    当 key 不存在或没办法设置生存时间时,返回 0 。(查看 上面 EXPIRE 命令获取更多信息)

    127.0.0.1:6379> set name redis666
    OK
    127.0.0.1:6379> pexpireat name 1600481820000    // 设置name过期时间为2020/9/19 10:17:00的unix时间戳1600481820000, 现在是2020/9/19 10:15:00
    (integer) 1
    127.0.0.1:6379> ttl name    // 剩余过期时间30s
    (integer) 30
    127.0.0.1:6379> pttl name    // 剩余过期时间 ms
    (integer) 27723
    127.0.0.1:6379> ttl name
    (integer) 9
    127.0.0.1:6379> ttl name    // 已过期
    (integer) -2
    127.0.0.1:6379> exists name    // name不存在了
    (integer) 0
    127.0.0.1:6379>

    5.PTTL

    PTTL key

    这个命令类似于 TTL 命令,但它以毫秒为单位返回 key 的剩余生存时间,而不是像 TTL 命令那样,以秒为单位。

    可用版本:>= 2.6.0

    复杂度:O(1)

    返回值:

    当 key 不存在时,返回 -2 。
    当 key 存在但没有设置剩余生存时间时,返回 -1 。
    否则,以毫秒为单位,返回 key 的剩余生存时间。
    在 Redis 2.8 以前,当 key 不存在,或者 key 没有设置剩余生存时间时,命令都返回 -1
    127.0.0.1:6379> set name redis666
    OK
    127.0.0.1:6379> pttl name    // key存在但是没有设置过期时间
    (integer) -1
    127.0.0.1:6379> pttl age    // key不存在
    (integer) -2
    127.0.0.1:6379> pexpire name 10000
    (integer) 1
    127.0.0.1:6379> pttl name    // 返回剩余过期时间ms
    (integer) 7084
    127.0.0.1:6379> ttl name    // ttl返回剩余过期时间s
    (integer) 5
    127.0.0.1:6379>

    6.RANDOMKEY

    RANDOMKEY

    从当前数据库中随机返回(不删除)一个 key 。

    可用版本:>= 1.0.0

    时间复杂度:O(1)返回值:

    当数据库不为空时,返回一个 key 
    当数据库为空时,返回 nil 
    127.0.0.1:6379> keys *    // 空的db
    (empty list or set)
    127.0.0.1:6379> randomkey    // 返回nil
    (nil)
    127.0.0.1:6379> set name redis666    // set 三个值
    OK
    127.0.0.1:6379> set age 66
    OK
    127.0.0.1:6379> set tel 111111
    OK
    127.0.0.1:6379> randomkey    // 随机返回
    "tel"
    127.0.0.1:6379> randomkey
    "age"
    127.0.0.1:6379> randomkey
    "tel"
    127.0.0.1:6379> randomkey
    "age"
    127.0.0.1:6379> randomkey
    "tel"
    127.0.0.1:6379> randomkey
    "tel"
    127.0.0.1:6379> randomkey
    "age"
    127.0.0.1:6379> randomkey
    "age"
    127.0.0.1:6379> randomkey
    "tel"
    127.0.0.1:6379> randomkey
    "name"
    127.0.0.1:6379> randomkey
    "tel"

    7.RENAME

    RENAME KEY newkey

    将key改名为newkey。

    当key不存在时, 返回一个错误.

    当newkey已经存在时, rename命令将覆盖旧值

    可用版本:>= 1.0.0

    时间复杂度:O(1)

    返回值:改名成功时提示 OK ,失败时候返回一个错误。

    127.0.0.1:6379> set name redis666
    OK
    127.0.0.1:6379> set name2 redis888
    OK
    127.0.0.1:6379> rename age newage    // 1.当key不存在时, 报错
    (error) ERR no such key
    127.0.0.1:6379> rename name name3    // 2.当key存在, newkey不存在
    OK
    127.0.0.1:6379> exists name  // key不存在了
    (integer) 0
    127.0.0.1:6379> get name3  // newkey
    "redis666"
    127.0.0.1:6379> rename name3 name2    // 3.当newkey已经存在, key覆盖newkey
    OK
    127.0.0.1:6379> exists name3    // key不存在了
    (integer) 0
    127.0.0.1:6379> get name2    // newkey值被覆盖了
    "redis666"
    127.0.0.1:6379>
  • 相关阅读:
    关联规则算法---Eclat算法
    Apriori算法第二篇----详细分析和代码实现
    scrapy框架初识
    git入门
    phantomjs的和谷歌浏览器的简单使用
    selenium模块的而简单使用
    代理ip的使用以及多进程爬取
    爬虫之re块解析
    爬虫初识和request使用
    xpath的基础使用
  • 原文地址:https://www.cnblogs.com/no-celery/p/13695265.html
Copyright © 2020-2023  润新知