Redis keys 性能问题

来源:互联网 发布:淘宝发货骗局 编辑:程序博客网 时间:2024/06/03 15:09

(一)keys命令的使用

进入Redis-cli之后,我们通常比较关心的是有哪些key(ps:当然也可以用其他客户端工具),那么就不得不说keys命令

keys pattern
  • 1
  • 1

获取当前库下的所有key

keys *
  • 1
  • 1

如下图所示,存在四个key:redis01、redis11、hbase01、hbase11

这里写图片描述

keys支持一下3种类型的通配符:

(1)*,该通配符表示任一长度的字符

如:keys *,匹配数据库中所有 key ;

如:查找以redis开头的所有key

keys redis*
  • 1
  • 1

这里写图片描述

(2)?,该通配符表示任一字符

如:查找以Hbase开头、第6位为任一字符、以”1”结尾的key

keys hbase?1
  • 1
  • 1

这里写图片描述

(3)[],这和正则表示中的[]类似,每次可以配其中任何一个字符。

如:

keys redis[01]1
  • 1
  • 1

会匹配”redis01”和”redis11”,“2”不再【01】中,所有”redis21”未能匹配上

这里写图片描述

(二)利用keys的模糊匹配带来的性能问题

从上面开来,keys的模糊匹配功能很方便也很强大,但是在生产环境需要慎用!开发中使用keys的模糊匹配却发现redis的CPU使用率极高,所以公司的redis生产环境将keys命令禁用了!

那怎么解决这种类似的keys模糊匹配问题呢?

1) 常见的方法就是设置一个set,将需要使用的keys存储在set中。

2)换到一个keys少的库

目录(?)[+]

(一)keys命令的使用

进入Redis-cli之后,我们通常比较关心的是有哪些key(ps:当然也可以用其他客户端工具),那么就不得不说keys命令

keys pattern
  • 1
  • 1

获取当前库下的所有key

keys *
  • 1
  • 1

如下图所示,存在四个key:redis01、redis11、hbase01、hbase11

这里写图片描述

keys支持一下3种类型的通配符:

(1)*,该通配符表示任一长度的字符

如:keys *,匹配数据库中所有 key ;

如:查找以redis开头的所有key

keys redis*
  • 1
  • 1

这里写图片描述

(2)?,该通配符表示任一字符

如:查找以Hbase开头、第6位为任一字符、以”1”结尾的key

keys hbase?1
  • 1
  • 1

这里写图片描述

(3)[],这和正则表示中的[]类似,每次可以配其中任何一个字符。

如:

keys redis[01]1
  • 1
  • 1

会匹配”redis01”和”redis11”,“2”不再【01】中,所有”redis21”未能匹配上

这里写图片描述

(二)利用keys的模糊匹配带来的性能问题

从上面开来,keys的模糊匹配功能很方便也很强大,但是在生产环境需要慎用!开发中使用keys的模糊匹配却发现redis的CPU使用率极高,所以公司的redis生产环境将keys命令禁用了!

那怎么解决这种类似的keys模糊匹配问题呢?

1: 设置一个set,将需要使用的keys存储在set中。

2: 换到一个key少的redis 库中,然后再用keys

0 0