admin 管理员组

文章数量: 1087677

redis之踩坑【keys命令锁死redis】

郑重其事:线上禁止使用 keys 命令

分析:

  1. 众所周知,redis是单线程程序(官方做过很多实验,单线程不会降低内存读写效率,因为对于CPU处理内存效率极高),单线程不会因为并发产生数据异常。
  2. 当redis key非常多时,keys命令的时间耗费会急剧增加。(keys命令的时间复杂度为O(N),N为数据库里面key的数量)
  3. keys命令使用正则表达式(正则表达式对程序员很重要,可以异步我的正则表达式专栏共同学习)进行key匹配,如果数量过多,会导致CPU飙升。

注:keys命令本身很快,但是key的数量增加到一定程度,量变就会引发质变


解决方案:上线的Redis 禁用Keys命令

禁用方式如下:

第一步:找到redis 配置文件

这个需要根据redis的部署情况而定

第二步:找到配置文件的安全配置区

如下图所示:

It is also possible to completely kill a command by renaming it into an empty string
译:
也可以通过为一个命令重命名为一个空字符串来彻底销毁这个命令。

因此禁用 keys命令的配置为:

rename-command KEYS ""

 

本文标签: redis之踩坑keys命令锁死redis