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

相关推荐
小Tomkk10 分钟前
数据库 变更和版本控制管理工具 --Bytebase 安装部署(linux 安装篇)
linux·运维·数据库·ci/cd·bytebase
qq_124987075335 分钟前
基于JavaWeb的大学生房屋租赁系统(源码+论文+部署+安装)
java·数据库·人工智能·spring boot·计算机视觉·毕业设计·计算机毕业设计
倒流时光三十年1 小时前
SpringBoot 数据库同步 Elasticsearch 性能优化
数据库·spring boot·elasticsearch
forestsea1 小时前
深入理解Redisson RLocalCachedMap:本地缓存过期策略全解析
redis·缓存·redisson
码农小卡拉1 小时前
深入解析Spring Boot文件加载顺序与加载方式
java·数据库·spring boot
佛祖让我来巡山2 小时前
Redis 为什么这么快?——「极速快递站」的故事
redis·redis为什么快?
怣502 小时前
MySQL多表连接:全外连接、交叉连接与结果集合并详解
数据库·sql
wjhx2 小时前
QT中对蓝牙权限的申请,整理一下
java·数据库·qt
冰暮流星2 小时前
javascript之二重循环练习
开发语言·javascript·数据库
万岳科技系统开发3 小时前
食堂采购系统源码库存扣减算法与并发控制实现详解
java·前端·数据库·算法