redis源码学习7 一些未分类的功能模块

列内容

  • 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 等类似,但加个超时参数,并
  • 如果列表有值,返回它
  • 如果列表无值,阻塞客户端直到列表被加入一个值或超时
另外BRPOPLPUSH 是个复合操作
阻塞和继续是通过 redisDb.blocking_keys 和redisDb.ready_keys 等实现的,每帧都会检查如果存在的阻塞的客户端。
因为从库也是一种客户端,这个可用于集群间一些同步等操作。
另外,这个不只是可先阻塞再继续,还可以先就绪一些内容,再去取,这样同样能做一些异步操作。




notify.c 通过Pub/Sub 实现的操作通知系统

用于收集操作信息。默认不开启。


multi.c 事务和watch

MULTI 能组合多条命令,然后 EXEC 一次执行完
但下面两种情况下只会中断, 不会回滚!!!
  •  WATCHed 的键被修改了
  •  命令入队列前出错,如断开连接
但又因为redis 是核心业务是单线程的内存数据库,所以出错的可能性非常低


latency.c 时延监控

默认不开启。和slowlog 有类似功能,但只监控硬盘I/O,命令的执行(不具体哪个命令),fork 等。
存储在类型为dict 的 server.latency_events 里, 每种监控存最近LATENCY_TS_LEN(160)条时延过长的记录(只记时间戳和时延),然后可提供报告


slowlog.c 慢查询日志

用列表存储的日志。默认就开启,见宏 `CMD_CALL_FULL`
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值