redis生产命令禁用实操
一、为什么要禁用一些命令
在redis数据量比较大时,比如 500w或1000w以上的数据量的情况,执行 keys * ,fluashdb 这些命令,会导致redis长时间阻塞,大量请求被阻塞,cpu飙升,严重可能导致redis宕机,数据库雪崩。所以一些命令在生产环境禁止使用。
二、测试案例
使用100w的数据量来测试keys * ,可以看到花费了6s的时间查询,如果生产上时1000w级的数据量,那就难以想象会使业务系统发生什么,特别时高并发的场景,极有可能就把redis打崩溃了,绝对时p0级的事件。
for ((i=100*10000;i<=300*10000;i++)); do echo "set k$i v$i" >> /tmp/redisTest.txt ; done ;
cat /tmp/redisTest.txt | redis-cli -h 127.0.0.1 -p 6379 -a 111111 --pipe
三、怎么禁用这些这些命令
redis的配置文件中增加相关的配置,这三个命令就会被"" 替换,不能再执行
rename-command keys ""
rename-command flushall ""
rename-command flushdb ""
设置后结果如下: