线上 Redis 禁止使用 Keys 正则匹配操作
Redis 是单线程处理,在线上 KEY 数量较多时,操作效率极低【时间复杂度为 O(N)】,该命令一旦执行会严重阻塞线上其它命令的正常请求,而且在高 QPS 情况下会直接造成 Redis 服务崩溃!如果有类似需求,请使用 scan 命令代替!
线上禁止使用 monitor 命令
禁止生产环境使用 monitor 命令,monitor 命令在高并发条件下,会存在内存暴增和影响 Redis 性能的隐患
禁止大 string
核心集群禁用 1mb 的 string 大 key(虽然 redis 支持 512MB 大小的 string),如果 1mb 的 key 每秒重复写入 10 次,就会导致写入网络 IO 达 10MB;
redis 容量
单实例的内存大小不建议过大,建议在 10~20GB 以内。redis 实例包含的键个数建议控制在 1kw 内,单实例键个数过大,可能导致过期键的回收不及时。
keys *
进行模糊匹配引发 Redis 锁,造成 Redis 锁住,CPU 飙升,引起了所有调用链路的超时并且卡住,等 Redis 锁的那几秒结束,所有的请求流量全部请求到 RDS 数据库中,使数据库产生了雪崩,使数据库宕机。