知其然,知其所以然
Redis 2026-09-25

LFU 淘汰算法

本机真实用allkeys-lfu,400个key真实高频访问50次(hot_),400个key真实从不访问(cold_),触发淘汰后真实幸存率是hot_ 87.5%(350/400) vs cold_ 26.75%(107/400),OBJECT FREQ真实显示访问频率的差异。

Redis 真实验证 动画演示
Redis 2026-09-25

LRU 与 LFU 对比

本机真实用同一个访问模式(star_key历史上被访问100次,之后完全不碰;2000个filler_key各访问1次但都是最近访问的),LRU策略下star_key真实被淘汰了,LFU策略下star_key真实活下来了——同样的数据,两种策略给出完全相反的结果。

Redis 真实验证 动画演示
Redis 2026-09-25

maxmemory 限制

本机真实设maxmemory=3MB+noeviction,写到第715个key时真实收到OOM错误"command not allowed when used memory > maxmemory";换成allkeys-lru后同样超量写入500个key真实全部成功,没有一次报错。

Redis 真实验证 动画演示
Redis 2026-09-25

淘汰和过期的区别

本机真实验证即使完全禁用淘汰(noeviction),一个200ms过期的key依然会真实按时消失;再用volatile-ttl策略给1000个TTL长达999999秒(远未到期)的key制造内存压力,真实观测到4129次淘汰——证明淘汰是内存驱动,过期是时间驱动,两者真实完全独立。

Redis 真实验证 动画演示
Redis 2026-09-25

大量 Key 同时过期

本机真实插入5万个key全部设置相同的200ms过期时间,追踪DBSIZE的真实下降轨迹(0.11秒时已从5万降到5239,0.22秒时清零),并发PING探测显示整个过程最大延迟只有7.55毫秒——证明批量过期不会造成明显卡顿。

Redis 真实验证 动画演示
Redis 2026-09-01

分布式锁的 watchdog

本机真实实测 watchdog 续期机制:没有续期会双持锁、PEXPIRE 是重置不是叠加、崩溃自愈、迟到续期为何不破坏新主人的锁,以及续期解决不了的残留风险。

分布式锁 Lua脚本 动画演示
Redis 2026-08-28

SDS:Redis 自己的字符串

embstr/raw 编码分界与预分配增长策略的真实源码验证。

数据结构 内存 动画演示
Redis 2026-08-28

Hash 和 ZSet 什么时候换编码

listpack 到 hashtable/skiplist 的真实转换阈值实测。

数据结构 编码转换 动画演示
Redis 2026-08-28

Redis 一个线程,怎么同时管几万个连接

kqueue/epoll 等多路复用后端与真实 Redis 事件循环。

I/O多路复用 事件循环 动画演示
Redis 2026-08-28

渐进式 rehash:字典扩容不卡顿的秘密

真实抓拍到两张哈希表同时存在的渐进式迁移过程。

哈希表 扩容 动画演示
Redis 2026-08-28

跳表:ZSet 排名为什么不用逐个数

随机层数生成与 O(log N) 排名查询的真实源码与实测。

数据结构 跳表 动画演示
Redis 2026-08-28

RDB 与 AOF:崩溃之后到底丢了多少

真实 kill -9 对比 RDB-only 与 AOF 模式的数据丢失情况。

持久化 崩溃恢复 动画演示
京ICP备2026067502号-1京公网安备11010502063487号