Redis系列-8.键管理

Redis系列-8.键管理

文章中可能有地方描述偏差,欢迎留言指证

1.基本

很多命令在之前的文章中其实已经讲到过了,这里再统一说一下。同时对一些管理上的命令再讲一下。

2.单个键管理

下面所有描述里 {}都是必需参数,<>是可选参数

键重命名
rename {key} {newkey}
key:键名
newkey:新键名
结果:成功会返回ok

这个命令还是很简单,直接修改键值对数据中的键名。但要主意的是:如果要重命名为“X1”,在执行前已经存在键叫“X1”了,会直接覆盖掉同名的键。
而且,此命令会在执行之前调用del命令,如果键值较大时会存在阻塞的可能性

键重名(防覆盖)

为了解决会覆盖掉的问题,redis提供了一个新的命令。只有当新键不存在时才会成效。

renamenx {key} {newkey}
key:键名
newkey:新键名
结果:成功会返回1,失败返回0
随机返回一个键

和集合中随机有点区别的时,此命令是从当前redis是实例中,从所有键中随机返回一个。

randomkey
结果:返回一随机出中的键,没有值

类似于随机删除一个键。

键过期
expire {key} {seconds}
key:键名
seconds:以秒为单位的过期时间 

expireat {key} {timestamp}
key:键名
timestamp:以秒为单位的时间戳

expireat命令的时间参数是时间戳。比如“2016-08-01 00:00:00”转换后就是1469980800。

pexpire {key} {milliseconds}
key:键名
seconds:以毫秒为单位的过期时间 

pexpireat {key} {milliseconds-timestamp}
key:键名
timestamp:以毫秒为单位的时间戳

1..如果过期时间为负,则会删除键,如使用del一样。
2.persist命令会去除过期时间
3.对于字符串类型,使用set命令时会去掉过期时间

除了这两个命令外,可能还需要查询剩余的时间。用ttl获pttl都可以查询。但pttl查询精度更高,以毫秒为单位。有3种返回值:
1.大于0 剩余的时间
2.-1 没有设置过期时间
3.-2 键不存在

使用方式: 命令 {键名}

迁移键

数据迁移使用命令迁移不是一个很好的办法,因为命令是针对一个键来迁移,如果手动迁移会累死的。
具体命令请在使用时百度一下,很简单。这里就不再讲述了。

遍历键
keys {pattern}
pattern:可以是键名,也可以是带通配符的键名。glob模式的通配符

glob风格模式:
*代表任意字符
?代表匹配一个字符
[]代表匹配部分字符,如[1,3]就是1到3.[1,10]代表1-10任意的数字
\x 转义符,如果键名中需要用到* ?,就需要转义

keys * 遍历所有键
keys [j,r]edis 键名中第2345位是edis,第一位是j到r任意的字母
keys r?edis 用?代替那个位置的字母

不要在线上服务器中使用此命令,此命令会遍历所有键,当键较多时,会阻塞服务器。而redis又是单线程程序,后果会很严重。下面会介绍渐进式遍历

3.渐进式遍历

为了解决遍历时会阻塞的问题,redis提供了渐进式遍历

scan {cursor} [MATCH pattern] [COUNT number]
cursor:下次渐进式遍历时所需要的下标,第一次从0开始,如果再次变成0说明遍历完成
MATCH pattern:模式匹配,和keys一样。输入时需要写上match
COUNT number:每次遍历时的数目,默认为10.修改后无需每次都带上。同样输入时需要写上count

使用上如图:
这里写图片描述

同时redis还针对哈希类型,集合类型,有序集合提供了对应的遍历命令。
hscan 哈希
sscan 集合
zscan 有序集合

使用上同scan类似,这里不再赘述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值