欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > Redis常见阻塞原因

Redis常见阻塞原因

2024/10/24 22:24:44 来源:https://blog.csdn.net/weixin_47786582/article/details/140529081  浏览:    关键词:Redis常见阻塞原因

1、命令阻塞

使用时间复杂度O(n)的不当命令造成全表扫描,导致阻塞

如 keys * 获取所有key

2、RDB持久化save阻塞

Redis提供两个命令来生成RDB快照文件:

        1、save:主线程阻塞,写完RDB才放行

        2、bgsave : fork子线程,异步不阻塞

3、AOF日志阻塞

Redis AOF持久化是 等执行命令写内存完成后,将命令写入磁盘的日志文件

这样先执行后持久化的方式:AOF记录日志不做语法检查,可以减少额外开销

但AOF记录日志也是在主线程内执行的,因此刷盘时磁盘写压力过大可能会很慢阻塞后续操作

4、操作大KEY

bigKey:

  • string 类型的 value 超过 1MB
  • 复合类型(列表、哈希、集合、有序集合等)的 value 包含的元素超过 5000 个

操作大 key 造成的阻塞问题如下:

1、Redis单线程执行命令,操作大key时比较耗时,发生阻塞

2、获取大key网络传输流量很高,发生网络阻塞

查找大key :选择从节点查询

5、删除大 key

删除操作的本质是要释放键值对占用的内存空间。

为了高效管理内存空间,在应用程序释放内存时,操作系统需要把释放掉的内存块插入一个空闲内存块的链表,以便后续管理分配。这个过程会阻塞当前释放内存的应用程序。

如果一下子释放了大量内存,空闲内存块链表操作时间就会增加,相应地就会造成 Redis 主线程的阻塞

6、CPU竞争

Redis 是典型的 CPU 密集型应用,不建议和其他多核 CPU 密集型服务部署在一起。当其他进程过度消耗 CPU 时,将严重影响 Redis 的吞吐量。

7、网络问题

网都没了还想传输?后两个凑数有点。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com