文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

单线程 Redis 如此之快的四个原因

2024-12-13 15:44

关注

但是,在内部,Redis 采用单线程架构。

为什么单线程设计依然会有这么高的性能?如果利用多线程并发处理请求不是更好吗?

在本文中,让我们深入探讨为什么 Redis 才有单线程架构,依然如此之快,主要从下面4个方面讲解。

让我们一一剖析。

内存数据存储

访问 RAM 比磁盘快几个数量级

Redis 是一个基于内存存储数据,也就是上面表的RAM。

Redis 中的每个读写操作都等同于从命中 RAM(随机存取存储器)的变量中读取和写入。

访问 RAM 比直接访问磁盘快几个数量级,因此,Redis 比其他数据存储快得多。

优良的数据结构

作为内存中的数据存储,Redis 利用各种底层数据结构来高效地存储数据,而无需担心如何将它们持久化到持久存储中。

例如,Redis 列表是使用链表实现的,该链表允许在列表的头部和尾部附近进行恒定时间 O(1) 的插入和删除。

另一方面,Redis 排序集是通过跳跃列表实现的,它可以实现更快的查询和插入。

简而言之,无需担心持久化数据,Redis 中的数据可以更有效地存储,以便通过不同的数据结构进行快速检索。

单线程架构

单线程进程

Redis 的写入和读取速度极快,CPU 使用率对 Redis 来说从来都不是问题。

根据 Redis 官方文档,在普通 Linux 系统上运行时,Redis 每秒可以传递多达 100 万个请求。

然而,瓶颈主要来自网络 I/O。Redis 中的处理时间主要浪费在等待网络 I/O 上。

虽然多线程架构允许应用程序通过上下文切换并发处理任务,但 Redis 的性能提升是微乎其微的,因为大多数线程最终会在 I/O 中被阻塞。

通过采用单线程架构,Redis有下面的几个好处:

非阻塞 I/O

为了处理传入的请求,服务器需要在套接字上调用系统调用以将数据从网络缓冲区读取到用户空间。

这通常是一个阻塞操作,线程被阻塞并且在完全接收到来自客户端的数据之前什么都不做。

为什么我们不在确定套接字中的数据已准备好读取时才调用系统调用?

这就是 I/O 多路复用发挥作用的地方。

I/O 多路复用模块同时监视多个套接字,并且只返回可读的套接字。

准备好读取的套接字被推送到单线程事件循环,并由相应的处理程序使用​​Reactor Pattern​​进行处理。

简而言之,

因此,Redis 有意识地做出以下决定:

总结

综上所述,单线程架构是Redis团队经过时间考验的深思熟虑的选择。尽管是单线程的,Redis 仍然是性能最高和最常用的内存数据存储之一。

来源:JAVA旭阳内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯