- 博客(25)
- 收藏
- 关注
原创 Redis源码探究系列—有序集合 ZSet 的底层实现解析
本文将揭示ZSet如何通过双编码自适应机制,在不同数据规模下自动选择最优存储方式,实现内存与性能的完美平衡。
2026-05-07 08:00:00
530
原创 Redis源码探究系列—跳表(skiplist)源码实现详解
跳表(Skip List)是Redis有序集合(ZSet)底层实现的核心数据结构之一。本文将从数据结构定义到核心算法实现,系统剖析跳表的设计思想与工程细节。
2026-04-28 01:33:30
744
原创 Redis源码探究系列—Redis渐进式rehash机制源码分析
在这篇文章中,我们将深入分析Redis渐进式rehash机制的源码实现与设计原理,结合实际代码细节,剖析其如何通过“化整为零”、读写驱动、双表切换等策略,实现高效、无阻塞的哈希表扩容与缩容过程,并探讨其背后的设计和性能的极致优化。
2026-04-27 00:21:40
575
原创 Redis源码探究系列—字典(dict)结构源码详解(HashTable 实现)
Redis的字典实现了一个经典的哈希表,但在工程细节上做了大量优化:渐进式rehash、2的幂次扩容、SipHash哈希函数等。下面我们将深入分析Redis字典的结构和核心API实现。
2026-04-22 23:35:20
587
原创 Redis源码探究系列—双向链表(adlist)源码实现解析
与SDS一样,C语言同样没有内置链表,Redis选择自己实现一套简洁高效的双向链表。接下来,我们就来一起看一下Redis的底层是如何自己实现链表的。
2026-04-21 00:58:27
501
原创 Redis源码探究系列—SDS 扩容策略与内存预分配机制
在前两篇文章中,我们从整体结构到设计动机,逐步拆解了SDS的底层实现与它抛弃C字符串的根本原因。我们知道了SDS用 `len` 和 `alloc` 两个字段实现了O(1)获取长度和二进制安全,但留了一个关键问题没有展开:当字符串不断追加、缩短、再追加时,SDS 如何在性能和内存之间取得平衡?
2026-04-20 23:15:25
350
原创 Redis源码探究系列—Redis 为什么不用 C 字符串?SDS 的设计哲学
Redis并没有使用C语言原生的 `char*` 字符串,而是自己造了一个轮子:SDS(Simple Dynamic Strings)。为什么?C字符串到底有什么问题,值得Redis从头实现一整套字符串系统?下面我们就先简单的看一下这样设计的原因。
2026-04-19 22:35:00
558
原创 Redis源码探究系列—SDS 简单动态字符串源码解析
本文将逐模块拆解SDS的源码实现,从数据结构到核心API,逐一梳理SDS的数据结构设计与核心API实现。
2026-04-18 22:43:09
743
原创 Redis源码探究系列—Pipeline 在源码中是如何支持的?
每次redisCommand都要等上一条命令的回复回来,才能发下一条,那么N条命令就是N次RTT。那能不能把多条命令打包一次发过去,回复也一次性收回来呢?
2026-04-17 13:31:13
625
原创 Redis源码探究系列—客户端请求处理完整链路源码分析
当数据从内核读到用户态缓冲区之后,Redis究竟怎样把一串字节流变成一条可执行的命令,执行完毕后又如何把结果送回客户端?
2026-04-15 01:00:00
608
原创 Redis源码探究系列—Redis 如何处理高并发连接(accept + read + write 流程)
本文将继续深入分析Redis处理高并发连接的完整流程,包括accept流程、read流程、write流程。
2026-04-14 00:13:40
642
原创 Redis源码探究系列—epoll、kqueue 在 Redis 中的封装实现(下)
kqueue与epoll设计理念相似但API差异较大,Redis通过统一的抽象层屏蔽了这些差异,使得上层代码可以无缝运行在不同操作系统上。
2026-04-13 00:05:08
380
原创 Redis源码探究系列—epoll、kqueue 在 Redis 中的封装实现(上)
本文将深入剖析Redis对 epoll的封装实现,下一篇文章将分析kqueue的封装
2026-04-12 00:11:43
403
原创 Redis源码探究系列—Redis 时间事件(Time Event)源码详解
Redis通过时间事件实现了一个轻量级的定时器机制,在单线程中高效地管理各类周期性任务。
2026-04-11 19:09:35
561
原创 Redis源码探究系列—Redis 文件事件(File Event)源码详解
Redis基于Reactor模式实现了一套高效的事件驱动机制,其中**文件事件(File Event)**是其核心组件之一。
2026-04-11 00:57:47
555
原创 Redis源码探究系列—Redis Reactor 模型源码实现解析(下)
本文将继续深入分析Redis中的实际应用、性能优化技巧、AE_BARRIER深度解析、与典型Reactor对比等内容。
2026-04-10 02:38:20
521
原创 Redis源码探究系列—Redis Reactor 模型源码实现解析(上)
Redis 以单线程扛住海量并发(单机10万QPS)而闻名,其核心秘密就藏在 Reactor 模型的实现中。
2026-04-08 23:57:59
483
原创 Redis源码探究系列—Redis内存模型设计全解析
Redis的过期策略、内存淘汰策略底层具体是怎么实现的?serverCron每隔一段时间跑一次,到底在做什么?
2026-04-07 10:47:24
597
原创 Redis源码探究系列—Redis核心数据结构总览(对象系统设计)
Redis的String类型为什么既能存数字又能存文本?List什么时候用链表、什么时候用压缩列表?
2026-04-06 09:56:24
868
原创 Redis源码探究系列—事件循环模型全景解析(ae.c)
Redis是单线程的,却能处理大量并发连接,核心在于它的事件循环机制。ae.c是Redis自己实现的一个轻量级事件库,支持I/O多路复用和定时器。这篇文章拆解它的实现原理。
2026-04-04 01:08:57
538
原创 Redis源码探究系列—启动流程全解析(server.c 到 main 函数)
启动一个Redis实例看起来很简单,`redis-server` 一敲就完了。但你有没有想过,从按下回车到 Redis 开始接受连接,中间会发生啥事儿呢?
2026-04-01 23:30:33
513
原创 Golang源码探究系列—sync.Map 深入解读
既然已经有了 `map` + `sync.RWMutex`,为什么还要设计`sync.Map`呢? 这篇文章从源码层面拆解它的实现原理。
2026-04-01 00:57:47
673
原创 Redis源码探究系列—Redis 单线程真的是单线程吗?
Redis是单线程的—这句话流传太广了,以至于很多人真的以为 Redis 就一个线程在跑......
2026-03-31 01:11:28
541
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅