Redis系列-8.键管理

Redis系列-8.键管理

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

1.基本

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

2.单个键管理

下面全部描述里 {}都是必需参数,<>是可选参数redis

键重命名

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

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

键重名(防覆盖)

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

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

随机返回一个键

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

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

相似于随机删除一个键。spa

键过时

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命令时会去掉过时时间code

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

使用方式: 命令 {键名}

迁移键

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

遍历键

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相似,这里再也不赘述