IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Redis是单线程还是多线程?为什么效率这么高? -> 正文阅读

[大数据]Redis是单线程还是多线程?为什么效率这么高?

结论

首先我们先给出结论:Redis确实是单线程的,但是严格的说Redis并不是全面单线程的!!!

简单分析

Redis对外提供键值存储服务的主要流程是单线程,也就是网络IO数据读写是由单个线程来完成的。

持久化、异步删除、集群数据同步等是由额外线程来执行的。

好处:防止同步代码占用主线程,导致阻塞

官方解释

由于Redis是基于内存的操作,查找和操作的时间复杂度都是O(1),因此CPU并不是Redis的瓶颈!Redis的瓶颈很可能是机器内存与网络带宽的大小,故单线程易于实现并且CPU并不是其性能的瓶颈,所以使用单线程也合乎逻辑。

Redis高性能的原因

  • 完全基于内存

Redis的大部分操作都是在内存中进行,数据在内存中类似于HashMap

  • 降低了CPU的消耗

使用的是单线程,避免了不必要的上下文的切换;也不存在多进程、多线程的切换来消耗CPU资源;还不用考虑各种锁的问题,即不用进行加锁、释放锁的操作。

  • 采用了更加高效的非阻塞IO

底层是采用了一个epoll的IO模型,Redis自身的事件处理模型是采用epoll的连接,读写的关闭都转换成了事件,不会在IO上浪费过多的时间,使Redis在网络IO操作中它的并发处理能力大大提高,实现了高吞吐量

Redis使用IO多路复用功能来监听多个socket连接的客户端,这样就可以使用一个线程来处理多个情况,从而减少线程切换带来的开销,同时也避免了IO阻塞操作,从而大大提高了Redis的性能。

也可以参考如下链接?

redis是单线程还是多线程,为什么-Redis-PHP中文网icon-default.png?t=M4ADhttps://www.php.cn/redis/466744.html

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-18 23:28:02  更:2022-06-18 23:29:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 22:22:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码