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

MULTI/EXEC 事务

本机真实用裸RESP协议手动发MULTI/命令/EXEC,验证排队期间每条命令都只收到+QUEUED,真正的执行全部压缩在EXEC那一刻一次性完成。

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

Redis 事务为什么没有回滚

本机真实对比排队期语法错误(EXECABORT整体丢弃)和运行时类型错误(WRONGTYPE,只影响那一条命令),理解Redis事务为什么没有回滚机制。

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

WATCH 乐观锁

本机真实用两个连接验证WATCH+MULTI+EXEC,被WATCH的key在EXEC前被修改会导致EXEC返回nil,整个事务取消。

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

Lua 脚本原子性

本机真实用20线程并发压测非原子GET+SET(丢924次更新)对比原子Lua脚本(0次丢失),验证Lua脚本原子性真实解决了丢失更新问题。

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

Lua 脚本阻塞主线程

本机真实跑CPU密集Lua脚本,验证未超过lua-time-limit(5000ms)时其它客户端静默阻塞无错误,超过后才收到明确的BUSY错误。

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

Redis Functions

本机真实用FUNCTION LOAD注册带名字的函数库并FCALL调用,对比裸EVAL脚本,验证Functions具备的名字管理和持久化能力。

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

Lua 脚本缓存

本机真实验证EVAL一段从未LOAD过的新脚本会自动进入缓存,假SHA和SCRIPT FLUSH后EVALSHA都会报NOSCRIPT错误。

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

SCRIPT KILL

本机真实验证SCRIPT KILL能杀死一个纯计算的失控Lua脚本,但对已执行过写命令的脚本会被拒绝,报错UNKILLABLE。

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

事务和 Pub/Sub 的边界

本机真实验证PUBLISH和SUBSCRIBE都能被排进MULTI事务,但真正进入订阅模式后的连接只能执行极少数命令如PING。

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

Lua 脚本中的慢命令

本机真实在Lua脚本里用SORT对200万元素排序(2.33秒),验证脚本阻塞主线程的根源是命令本身的时间复杂度,不是Lua代码量。

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

List 的 quicklist 结构

本机真实起Redis 8.10.1,把list-max-listpack-size设成128,真实验证一个list在128个元素时是listpack编码,加第129个元素的瞬间真实变成quicklist。

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

ListPack 如何替代 ZipList

本机真实验证list、hash、zset三种类型的小集合,OBJECT ENCODING真实都统一显示listpack,不再是老版本Redis的ziplist——三种类型变大后真实分别转向quicklist、hashtable、skiplist三种不同的结构。

Redis 真实验证 动画演示
京ICP备2026067502号-1京公网安备11010502063487号