3.Redis 单线程模型

redis 单线程模型

redis 只使用一个线程来处理所有的命令请求,并不是说一个 redis 服务器进程内部真的就只有一个线程,其实也有多个线程,多个线程是再处理网络 IO。

那么在多线程中,针对类似于这样的场景两个线程尝试同时对一个 变量 进行自增表面上看是自增两次,实际上可能只只增了一次。

其中比如下面这种场景下:

此时当前这个两个redis客户端,也相当于"并发"的发起了上述的请求

此时就意味着是否服务器这边也会存在类似的线程安全问题吗?

幸运的是,并不会发生这种问题,redis 服务器实际上是单线程模型,保证了当前收到的这多个请求是串行执行的!!!

redis 虽然是单线程模型,为啥效率这么高呢?

  1. redis 直接访问内存,而如mysql等数据库则是访问硬盘。
  2. redis 核心功能,比数据库的核心功能更加简单
    数据库对于数据的插入删除查询都有更复杂的功能支持,这样的功能势必要花费更多的开销。比如,针对插入删除,数据库中的各种约束,都会使数据库做额外的工作。
  3. redis 单线程模型,避免了一些不必要的线程竞争开销
    redis 每个基本操作,都是短平快的,就是操作内存数据,不是什么特别消耗cpu的操作,就算搞多线程也提升不大
  4. 处理网络 IO 的时候,使用了 epoll 这样的 IO 多路复用机制~
相关推荐
这个DBA有点耶4 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G4 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备4 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远4 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
IT大白鼠4 天前
Redis 系列 · 第 01 篇——认知入门:Redis 是什么
redis·nosql
彧azz4 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
2601_962218614 天前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
全栈弄潮儿²⁰²⁴4 天前
AI Agent 开发实战(30):限流、缓存与成本控制
人工智能·gpt·缓存·agent·限流·agi·成本控制
张洛闻Eren4 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
于平安4 天前
MySQL-触发器
数据库·mysql