自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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源码探究系列—Redis 为什么这么快?

面试官问"Redis 为什么快",很多人脱口而出"单线程没锁"。然而这只是表象。

2026-04-05 00:26:15 574

原创 Redis源码探究系列—事件循环模型全景解析(ae.c)

Redis是单线程的,却能处理大量并发连接,核心在于它的事件循环机制。ae.c是Redis自己实现的一个轻量级事件库,支持I/O多路复用和定时器。这篇文章拆解它的实现原理。

2026-04-04 01:08:57 538

原创 Redis源码探究系列—配置加载机制分析

redis.conf里的那些配置项,Redis是怎么读到内存里去的?

2026-04-03 01:18:58 504

原创 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关注的人

提示
确定要删除当前文章?
取消 删除