让Redis堵塞的命令熔断策略的前世今生(让redis堵死的命令)
Redis 是一个非常流行的轻量级 In-memory 数据库,可以提供高速的数据存储、读取和更新能力,非常适合服务端应用使用,但是在使用Redis时我们也要注意避免某些慢查询命令滥用。这些慢查询命令可以使Redis变得太慢,导致堵塞,让Redis宕机。而Redis熔断策略,正是用来解决此类问题的了。
1、Redis熔断策略的前世今生
首先我们要明白熔断策略其实是一种断路器的维护模式,有时甚至也称为断路保护机制,其目的是当系统中遇到异常情况时,能够自动断开请求/调用链条,从而缓解系统的压力,并防止异常状态再次出现或持续存在。在Redis中,熔断策略可以被称之为命令堆积保护机制,它主要针对的慢查询命令以及命令堆积问题,它检测各个Redis实例的命令调用情况,当命令调用达到熔断阈值时,就会自动熔断,从而保护Redis正常的性能及安全。
2、Redis熔断策略的实现
Redis官方已经为我们提供了一种实现方式,可以直接在redis.conf中加入下面的配置,则可以启用熔断策略:
# Enable command fusion protection
rename-command CONFIG b845d304-CONFIG
rename-command debug b845d304-debug
rename-command flushdb b845d304-flushdb
rename-command flushall b845d304-flushall
maxclients 10000
maxmemory-policy noeviction
当命令调用次数超过一定阈值时,Redis框架就会把所有命令转换成b845d304-,从而强制熔断。
3、这种策略的注意事项
虽然熔断策略很好的保护了Redis节点,但你也要谨记以下几点:
(1)熔断策略不应针对查询型命令,只应针对写型和管理类命令。
(2)如果Redis熔断策略一直激活,则可能是系统的服务器太低,可以考虑增加Redis服务器的配置来提升服务器性能。
(3)如果服务器性能已经不错,可能是Redis命令堆积太多,可以查看Redis节点是否存在脏数据,以及客户端调用环境是否存在循环调用,采取正确的处理措施。
Redis熔断策略是一种很有用的方式,可以对Redis进行有效的性能保护,但由于可能引发命令堆积以及网络性能问题,实施熔断策略前,建议先用好前置分析,以避免造成不可避免的系统故障。