2024-05-02  阅读(65)
版权声明:本文为博主付费文章,严禁任何形式的转载和摘抄,维权必究。 本文链接:https://www.skjava.com/mianshi/baodian/detail/2065068347

回答

Redis 的高性能是我们毋庸置疑的,但是 Redis 也会存在阻塞的情况,导致整个系统变慢,从而影响用户体验。以下几种场景会导致 Redis 阻塞。

一、慢查询

若 Redis 执行一个命令的时间超过指定的阈值(slowlog-log-slower-than),则 Redis 会将该命令记录到慢查询日志中。

由于 Redis 执行命令是单线程,如果执行某个命令花费时间比较长,则会阻塞其他命令的执行,如果执行大量的慢查询,则会严重阻碍 Redis 服务的性能。

关于慢查询详情请阅读:了解 Redis 的慢查询吗?

二、操作大 key

大 key 是指 key 对应的 value 很大。大 key 可能导致 Redis 阻塞的情况有两种:

  • 超时阻塞:由于 Redis 是单线程执行命令的,操作大 key 比较耗时,这会阻塞其他命令的执行。同时,如果我们要删除某个大 key,则需要一次性释放所有与该 key 相关联的内存,这是一个相当消耗 CPU 的过程。
  • 网络阻塞:大 key 的数据量很大,每次获取的时候会占用大量的流量。