Redis危险命令处理

注意:

危险命令

线上是不能执行 keys * 相关命令,虽然其模糊匹配功能使用非常方便也很强大,在小数据量情况下使用没什么问题,数据量大会导致 Redis 锁住及 CPU 飙升,在生产环境建议禁用或者重命名!

危险命令有哪些?

1
2
3
4
keys  //客户端可查询出所有存在的键。
flushdb //删除Redis中当前所在数据库中的所有记录,并且此命令从不会执行失败。
flushall //删除Redis中所有数据库中的所有记录,不只是当前所在数据库,并且此命令从不会执行失败。
config //客户端可修改 Redis 配置

解决办法:redis.conf 默认配置文件,找到 SECURITY 区域,有相关描述。

操作:

1.打开redis配置文件

1
vim redis.conf

2.找到##SECURITY##区域,按照Example配置rename_command

1
2
:/rename_command
\# //n下一个,N上一个

如何禁用命令或重命名命令

1.禁用命令,添加 rename-command 配置即可达到安全目的

1
2
3
4
rename-command KEYS     ""
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""

2重命名命令

1
2
3
4
rename-command KEYS     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
rename-command FLUSHALL "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
rename-command FLUSHDB "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
rename-command CONFIG "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"