redis 的key操作是涉及范围最广的操作 。

 1、Redis 列出key

keys  *user*
keys  *

有3个通配符 *, ? ,[]

  • *: 通配任意多个字符
  • ?: 通配单个字符
  • []: 通配括号内的某1个字符

注:生产已经禁止。更安全的做法是采用scan,原理和操作如下: 针对Keys的改进,支持分页查询Key。在迭代过程中,Keys有增删时不会要锁定写操作,数据集完整度不做任何保证,同一条key可能会被返回多次.对于其他危险的命令,新版本也进行了替代: 

redis-cli下的扫描:

redis-cli --scan --pattern 'chenqun_*'

这是用scan命令扫描redis中的key,--pattern选项指定扫描的key的pattern。相比keys pattern模式,不会长时间阻塞redis而导致其他客户端的命令请求一直处于阻塞状态。

 2、Redis 测试指定key是否存在

exists key       // 返回1表示存在,0不存在

3、Redis 删除给定key

del key1 key2 ....keyN      // 返回1表示存在,0不存在

 4、Redis 返回给定key的value类型

type key    //返回 none 表示不存在key。string字符类型,list 链表类型 set 无序集合类型...

5、Redis 返回从当前数据库中随机选择的一个key

randomkey    // 如果当前数据库是空的,返回空串

6、Redis 原子的重命名一个key 

rename oldkey newkey
如果newkey存在,将会被覆盖,返回1表示成功,0失败。可能是oldkey不存在或者和newkey相同

renamenx oldkey newkey 
同上,但是如果newkey存在返回失败

 7、Redis Key的超时设置处理

expire key seconds
单位是秒。返回1成功,0表示key已经设置过过期时间或者不存在。 如果想消除超时则使用persist key。如果希望采用绝对超时,则使用expireat命令。

ttl key 
返回设置过过期时间的key的剩余过期秒数 -1表示没有设置过过期时间,对于不存在的key,返回-2。

pexpire key 毫秒数
设置生命周期。

pttl  key
以毫秒返回生命周期。

注:当client主动访问key会先对key进行超时判断,过时的key会立刻删除。如果clien永远都不再get那条key呢? 它会在Master的后台,每秒10次的执行如下操作: 随机选取100个key校验是否过期,如果有25个以上的key过期了,立刻额外随机选取下100个key(不计算在10次之内)。可见,如果过期的key不多,它最多每秒回收200条左右,如果有超过25%的key过期了,它就会做得更多,但只要key不被主动get,它占用的内存什么时候最终被清理掉只有天知道。在主从复制环境中,由于上述原因存在已经过期但是没有删除的key,在主snapshot时并不包含这些key,因此在slave环境中我们往往看到dbsize较master是更小的。

原文链接: https://www.w3cschool.cn/redis_all_about/redis_all_about-sfc726u6.html