文章目录
Redis 阻塞管理
Redis是典型的单线程架构,所有的读写操作都是在一条主线程中完成的。当Redis用于高并发场景时,这条线程就变成了它的生命线。如果出现阻塞,哪怕是很短时间,对于我们的应用来说都是噩梦。
因此,发现阻塞后应该快速响应和处理。阻塞主要发生原因主要有外在和内存两方面,内在原因包括不合理地使用数据结构、CPU饱和、持久化阻塞等,外在原因包括CPU竞争、内存交换、网络问题等。
1. 内在原因检查
1. 检查数据结构使用是否不合理
1. 检查慢查询
对于高并发的场景应该尽量避免在大对象上执行算法复杂度超过O(n)的命令。
请参考《Redis慢查询日志管理》。
发现慢查询后,需及时对Redis命令进行调整,如调整高算法复杂度的命令子低算法复杂度的命令、将大对象优化或拆分等。
2. 检查bigkey
实际应用场景下,超过一定大小的KEY如果不加以优化,可能就会给线上带来不可预估的灾难。
在实际业务中,大Key的判定仍然需要根据Redis的实际使用场景、业务场景来进行综合判断。
请参考《Red