0
点赞
收藏
分享

微信扫一扫

API 的理解与使用- 键管理

四月Ren间 2022-04-21 阅读 49
redis

文章目录

键管理

单个键管理
  1. 键重命名
    rename key newkey

     127.0.0.1:6379> set python jedis
     OK
     127.0.0.1:6379> rename python java
     OK
     127.0.0.1:6379> get python
     (nil)
     127.0.0.1:6379> get java
     "jedis"
    

如果在rename 之前,键python 已经存在,那么它的值也将被覆盖
为了防止强行rename,redis 提供了renamenx 命令,确保只有newkey 不存在时才被覆盖,返回结果如果是0,则表示没有完成重命名
注意两点:
1)由于重命名键期间会执行del 命令删除旧的键,如果键对应的值比较大。会存在阻塞redis 的可能性
2)如果rename 和renamenx 中的key 和newkey 如果是相同的,在redis 3.2 和之前会有不同,3.2 之前会提示报错。

  1. 随机返回一个键
    randomkey

     127.0.0.1:6379> randomkey
     "boy"
    
  2. 键过期
    expire key seconds :键在seconds 秒后过期
    expireat key timestamp :键在秒级时间戳timestamp 后过期
    ttl key 查看键剩余过期时间
    pttl key 精确到毫秒

毫秒级键过期
pexpire key milliseconds 单位为毫秒

persist 命令可以将键的过期时间清除

persist key

对于字符串类型键,执行set 命令会去掉过期时间,这一点在开发中很容易被忽视

迁移键

提供三种迁移方式

  1. move

    move key db
    

即把key 移动到另外一个数据库,通常在redis内部进行,生成环境不建议使用,了解即可。

  1. dump+restore (非原子操作)

    dump key
    dump key ttl value

这种方式可以实现在不同实例之间进行数据迁移的功能,整个迁移的过程分两步:
1)在源redis 上,dump 命令会将键值序列化,格式采用的是RDB 格式。
2)在目标redis 上,restore命令将上面的序列化的值进行复原。ttl 为过期时间,ttl=0 代表没有过期时间

  1. migrate

migrate host port key|“” destination-db timeout copy replace key1 key2 …key

 host:目标redis IP
 port:目标端口
 key|"" :redis 3.06版本之前migrate只支持迁移一个键,如果是迁移多个键此处填""
 destination-db: 目的数据库索引号
 timeout: 迁移的超时时间,单位毫秒
 copy:如果添加此选项,迁移后并删除源键
 replace: 如果选择此选项,migrate 不管目标redis 是否存在该键都会正常迁移进行数据覆盖
 key1...key:迁移的键
 
 
 127.0.0.1:6379> migrate 127.0.0.16380 "" 0 5000 key1 key2 key3

遍历键

redis 提供两个命令遍历键,分别是keys 和scan

全量遍历键

keys pattern 支持正则
如果键个数比较多,容易造成阻塞,生成环境一般禁用

渐进式遍历

scan cursor [match pattern] [count number]

cursor 是一个游标,第一次遍历从0开始,每次scan 遍历完都会返回当前游标的值

match 可选参数,做模式匹配,类似keys的匹配
count 可选参数。默认10,每次遍历的个数
scan 并不能保证遍历的完整性,当scan 过程中,如果键发生变化,可能导致遍历不到。

数据库

切换数据库
redis 默认16个数据库,用编号来区分0-15,默认使用0号数据库。

select dbindex

清除数据库
flushall 清除所有数据库
flushdb 清除当前数据库
!!!慎用

举报

相关推荐

0 条评论