Redis--Command

Redis
Flushdb:用于清空当前数据库汇总的所有key
Redis--Command_第1张图片
Flushall命令用于清空整个Redis服务器的数据(删除所有数据库的所有key)
Redis--Command_第2张图片
Keys命令用于查找所有符合给定模式pattern的key
Redis--Command_第3张图片

Smembers 命令返回集合中的所有成员,不存在的集合Key被视为空集合
Redis--Command_第4张图片
HGETALL 返回哈希表key中,所有的域和值
Redis--Command_第5张图片

keys wxdb……cf8 这样的命令,导致redis锁死,导致cpu飙升,引起所有支付链路卡主,等十几秒结束后,所有流量全部挤压到了rds数据库中,使得数据库产生了雪崩效应,发生了数据库宕机事件。

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

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

解决办法:
禁用or重命名危险命令

redis.conf 默认配置文件,找到SECURITY区域,如以下所示
Redis--Command_第6张图片
看说明,rename-comand 配置即可达到安全目的
1 禁用命令
在这里插入图片描述
2 重命名命令
在这里插入图片描述
上面的XX可以定义新命令名称,or用随机字符代替。
经过以上的设置之后,危险命令就不会被客户端执行了。

你可能感兴趣的:(Redis)