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可以返回数据了,就直接使用内核通知线程返回

相关推荐
彦偈16 小时前
Centos7 oracle 11G 搭建ADG
数据库·oracle
言德斐1 天前
SQL性能优化的思路及策略
数据库·sql·性能优化
码界奇点1 天前
Django视图从基础到高级的全面解析
数据库·django·sqlite·web·python3.11
Allan_20251 天前
数据库学习
数据库·学习
fen_fen1 天前
人大金仓数据库kingbase8创建表示例
数据库·oracle
一勺菠萝丶1 天前
「您的连接不是私密连接」详解:为什么 HTTPS 证书会报错,以及如何正确配置子域名证书
数据库·网络协议·https
²º²²এ松1 天前
蓝牙低功耗(BLE)通信的中心设备/外围设备(连接角色)、主机/从机(时序角色)、客户端/服务器(数据交互角色)的理解
运维·服务器·数据库
百锦再1 天前
Vue Scoped样式混淆问题详解与解决方案
java·前端·javascript·数据库·vue.js·学习·.net
数据库知识分享者小北1 天前
云栖重磅|瑶池数据库:从云原生数据底座向“AI就绪”的多模态数据底座演进
数据库·人工智能·云原生
_Johnny_1 天前
Redis 升级操作指南:单机与主从模式
数据库·redis·缓存