flâneur — a map of the web's best reading

Redis 多线程的学习和理解 - lxkaka

lxkaka.wang · 526 words · saved by 1 readers

Redis v6.0 真正意义上引入了多线程,我们有必要深刻理解这个特性的实现和意义

Redis 多线程的学习和理解 lxkaka 收录于 原理 存储 基础 2022-10-30 约 3890 字 预计阅读 8 分钟 目录 在后端开发中面临分布式缓存选型时 Redis 已然成为了头号选手甚至可以说是事实上的标准。Redis 从本质上来讲是一个网络服务器,而对于一个网络服务器来说,网络模型是它的核心。而关于网络模型我们知道 Redis v6.0 版本引入了一个非常重要的特性-多线程 IO。在这篇文章里我们学习一下这个重要的特性,有助于我们更好的额理解 Redis 的底层实现。 Redis 单线程 这里说的单线程指的是 Redis 的网络模型用单线程实现。单线程实现有以下优点 避免过多的上下文切换开销 多线程调度过程中必然需要在 CPU 之间切换线程上下文 context,而上下文的切换又涉及程序计数器、堆栈指针和程序状态字等一系列的寄存器置换、程序堆栈重置甚至是高速缓存、TLB 快表的汰换,如果是进程内的多线程切换还好一些,因为单一进程内多线程共享进程地址空间,因此线程上下文比之进程上下文要小得多,如果是跨进程调度,则需要切换掉整个进程地址空间。 如果是单线程则可以规避进程内频繁的线程切换开销,因为程序始终运行在进程中单个线程内,没有多线程切换的场景。 可以实现无锁 如果 Redis 选择多线程模型,又因为 Redis 是一个数据库,那么势必涉及到底层数据同步的问题,

Explore this link on the map →

saved by

related reading