数据库内核实验索引
汇总本站数据库内核文章:PostgreSQL / MySQL InnoDB / 列存引擎 / 数据湖与开放表格式 / 流式数据处理 / 分布式 OLAP 查询引擎 / RocksDB 内核 / 向量检索引擎 / Redis 缓存内核 / 全文检索引擎,以及 LSM-Tree 从零实现实验。
发布来自土法炼钢兴趣小组的知识、笔记、进展和应用。主题包括数据结构和算法、编程语言、网络安全、密码学等。
共 23 篇文章 · 返回首页
汇总本站数据库内核文章:PostgreSQL / MySQL InnoDB / 列存引擎 / 数据湖与开放表格式 / 流式数据处理 / 分布式 OLAP 查询引擎 / RocksDB 内核 / 向量检索引擎 / Redis 缓存内核 / 全文检索引擎,以及 LSM-Tree 从零实现实验。
定位进程内 HashMap、Memcached、Redis 与 RocksDB 嵌入 KV 在内存缓存栈中的生态位;划分与 architecture/17、storage/66、linux/redis-source 的分工,并给出本系列 16 篇阅读地图。
按 Redis OSS 7.4/8.x 源码拆解 aeEventLoop 文件/时间事件、beforeSleep 钩子与客户端 querybuf/reply 路径,并精确说明 IO threads 只卸载读写与解析、命令仍在主线程执行。
拆解 Redis 7.4/8.x 的 redisObject 多态层与 SDS 二进制安全字符串:type/encoding/refcount 如何分工、字符串四种编码的升级路径、OBJECT ENCODING 能读到什么,以及紧凑表示与统一抽象之间的工程争论。
从 Redis 7.4/8.x 的 dict 源码拆解链式哈希、双表渐进 rehash、rehashidx 步进与 DICT_RESIZE_AVOID 在 fork 期的行为,并对照站内哈希表内部文章说明与教科书一次性扩容的差异。
Redis 7.4/8.x 如何用 listpack、quicklist、intset 为小集合省内存:ziplist 退场原因、各 type 的 encoding 升级阈值与配置项默认值,以及紧凑表示在 CPU 与内存之间的工程争论。
Redis 7.4/8.x 有序集合的双结构 skiplist+dict 与小 listpack 编码、Pugh 跳表参数如何落地,以及 Stream 的 rax+listpack 存储与 consumer group / PEL 的最小必要语义——不扩写消息队列教科书。
拆解 Redis 7.4 的 TTL 机制:expires 辅助表、lookup 路径惰性删除、activeExpireCycle 自适应采样,以及 lazyfree 异步释放大对象对延迟的影响。
从 evict.c 拆解 volatile/allkeys 与 LRU/LFU/random/ttl 策略矩阵、24 位时钟近似 LRU、淘汰池采样,并对照算法篇真 LRU 与 MEMORY DOCTOR 信号。
从 rdb.c 拆解 SAVE/BGSAVE 的 fork 写时复制语义、子进程快照路径,以及 REDIS 魔数与 opcode 锚定的 RDB 格式边界。
从 aof.c 拆解 AOF 多段清单、feedAppendOnlyFile 写路径、后台 rewrite 与 appendfsync always/everysec/no 各自的丢失窗口及 fsync 失败语义。
说明 Redis 7.4 默认开启的 RDB preamble + INCR AOF 如何组合恢复路径,结合 fsyncgate 与数据完整性给出 appendfsync 与混合模式的配置决策树及耐久争论边界。
按 Redis 7.4/8.x replication.c 拆解 PSYNC 部分重同步、环形 replication backlog 与 replica-read-only 语义,对照异步复制与读己之写(read-your-writes)的工程边界,说明副本滞后如何改写 Cache-Aside 一致性假设。
按 Redis Cluster Spec 与 cluster.c 拆解 CRC16 取模 16384 的 hash slot、MOVED 与 ASK 重定向语义,对照客户端一致性哈希,说明 hash tag 下同槽多 key 原子性边界与迁移期 TRYAGAIN。
对照 Facebook Scaling Memcache(NSDI'13)与 Memcached 多线程+slab 分配器,拆解 Redis 多态编码与持久化带来的角色差异,说明在 Cache-Aside 场景下何时应选纯缓存而非数据结构服务器。
按 Redis Latency Monitoring 与 INFO/SLOWLOG 信号,建立大 key、fork 延迟、阻塞命令、内存碎片四类故障的排查决策树;给出可在本机 redis-server 上执行的复现命令清单,不粘贴伪造输出。
用决策树收束 standalone、Sentinel、Cluster 与纯缓存分工,简述 Valkey ABI 社区分叉与 Redis 模块边界,列出多线程与持久化争论,并给出回到本系列、architecture/17 与 RocksDB 的阅读地图以闭合全系列。
补齐内存 KV / 缓存服务器内核层:从 ae 事件循环与 redisObject 多态编码,到 TTL/maxmemory 近似淘汰、RDB/AOF 持久化语义,再到复制、Cluster hash slot 与 Memcached 对照。
企业开源战略的完整决策框架:何时开源与为何开源、六种商业模式对比(Open Core/双许可/托管服务/支持服务/Source Available)、中国案例(PolarDB/OceanBase/TiDB/鸿蒙/麒麟)、协议改变的教训与代价、以及完整的决策树。
完整还原 Kleppmann 与 Antirez 关于 Redlock 的技术争论,拆解 Fencing Token 方案的原理与实现,对比基于 etcd 和 ZooKeeper 的分布式锁正确实现,讨论锁粒度、Advisory Lock 与 Mandatory Lock 的区别,以及用版本号代替锁的替代思路。
限流是分布式系统的第一道防线。
当我们放弃对确定性平衡的执念,转而拥抱随机化,会发现一些最优雅的数据结构——Treap 用一个随机优先级就消除了旋转的痛苦,跳表用抛硬币就实现了对数级查找。这不是妥协,而是对概率论最精彩的工程应用。
Redis 源码分析:高性能内存数据库的设计与实现,原子操作与数据结构