列内容
- module.c 模块化接口(先留坑) https://redis.io/topics/modules-intro
- blocked.c
- notify.c 通过Pub/Sub 实现的操作通知系统
- multi.c 事务和watch
- latency.c 时延监控
- slowlog.c 慢查询日志
blocked.c 用于客户端的阻塞、等待操作
与t_list.c 相关联。BLPOP, BRPOP 操作和 LPOP 等类似,但加个超时参数,并- 如果列表有值,返回它
- 如果列表无值,阻塞客户端直到列表被加入一个值或超时
阻塞和继续是通过 redisDb.blocking_keys 和redisDb.ready_keys 等实现的,每帧都会检查如果存在的阻塞的客户端。
因为从库也是一种客户端,这个可用于集群间一些同步等操作。
另外,这个不只是可先阻塞再继续,还可以先就绪一些内容,再去取,这样同样能做一些异步操作。
notify.c 通过Pub/Sub 实现的操作通知系统
用于收集操作信息。默认不开启。multi.c 事务和watch
MULTI 能组合多条命令,然后 EXEC 一次执行完但下面两种情况下只会中断, 不会回滚!!!
- WATCHed 的键被修改了
- 命令入队列前出错,如断开连接
latency.c 时延监控
默认不开启。和slowlog 有类似功能,但只监控硬盘I/O,命令的执行(不具体哪个命令),fork 等。存储在类型为dict 的 server.latency_events 里, 每种监控存最近LATENCY_TS_LEN(160)条时延过长的记录(只记时间戳和时延),然后可提供报告