Redis是单线程性能还高的原因

Redis是单线程

Redis单线程是指Redis的网络IO和键值对读写是由一个线程完成的,其他功能还是使用多线程执行

Redis主干业务使用单线程的原因

Redis本质就是一个大的共享资源,共享资源是需要对其进行并发控制的,即使增加了线程,大部分线程也是在等待互斥锁,并行变串行,而且还需要进行并发控制,反而效率变慢了

所以Redis网络IO和键值对读写采用单线程反而效率是最高的

Redis性能高的原因

1、Redis的大部分操作在内存上完成,再加上它采用了高效的数据结构

2、Redis采用多路复用机制,其在网络IO操作中能并发处理大量的客户端请求,实现高吞吐率

Redis多路复用机制运行过程

Redis是使用网络IO进行数据请求和返回的,网络IO中socket由分为读和写

socket和线程是两个概念,可以理解为socket是一个网络通信的通道提供读写操作的,线程是处理这些操作的

传统堵塞IO,是Redis需要处理完一个socket请求,等待它返回,最后得到结果,再处理下一个

传统非阻塞IO则是一直遍历socket请求是否成功,如果成功就返回,如果失败不返回,一直轮询,最早的Redis就是采用的这一方式

现在的多路IO复用是指我现在使用单线程管理多个socket,使用事件监听的方式监听每个socket,那个socket可以返回数据了,就直接使用内核通知线程返回

相关推荐
用户3169353811833 天前
Java连接Redis
redis
倔强的石头_3 天前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
冬奇Lab3 天前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
ClouGence4 天前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
无响应de神4 天前
三、用户与权限管理
数据库·mysql
小小工匠4 天前
Redis - 事务机制:能实现 ACID 属性吗
数据结构·redis·性能优化·并发·持久化
麦聪聊数据4 天前
数据服务化时代:企业数据能力输出的核心路径
数据库
shushangyun_4 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
DARLING Zero two♡4 天前
【MySQL数据库】数据类型与表约束
数据库·mysql
ofoxcoding4 天前
在AI API聚合平台配置DeepSeek V3.2提示词缓存实战:快速接入与成本优化指南
人工智能·spring·缓存·ai