Redis源码解析-全览

文章系转载,便于整理和分类,原文地址:https://www.cnblogs.com/ltaodream/p/15173978.html

通过阅读 Redis 源码,可以学习和掌握到的计算机系统设计思想

根据 Redis 不同的功能特性,分线条学习每个功能特性上涉及的关键技术和设计思想

对于Redis的代码架构,需要掌握以下两类内容

  • 代码的目录结构和作用划分,目的是理解 Redis 代码的整体架构,以及所包含的代码功能类别;
  • 系统功能模块与对应代码文件,目的是了解 Redis 实例提供的各项功能及其相应的实现文件,以便后续深入学习。

对于阅读 Redis 源码来说,要先从整体上掌握源码的结构,所以需要先形成一幅 Redis 源码的全景图(基于 Redis 5.0.8 版本

  • deps 目录

    这个目录主要包含了 Redis 依赖的第三方代码库,包括 Redis 的 C 语言版本客户端代码 hiredis、jemalloc 内存分配器代码(用来替换 glibc 库的内存分配器)、readline 功能的替代代码 linenoise,以及 lua 脚本代码。这部分代码的一个显著特点,就是它们可以独立于 Redis src 目录下的功能源码进行编译,也就是说,它们可以独立于 Redis 存在和发展。

  • src 目录

    这个目录里面包含了 Redis 所有功能模块的代码文件,也是 Redis 源码的重要组成部分。src 目录下只有一个 modules 子目录,其中包含了一个实现 Redis module 的示例代码。剩余的源码文件都是在 src 目录下。

  • tests 目录

    这个目录里面是用于功能模块测试和单元测试的代码。Redis 实现的测试代码可以分成四部分,分别是单元测试(对应 unit 子目录),Redis Cluster 功能测试(对应 cluster 子目录)、哨兵功能测试(对应 sentinel 子目录)、主从复制功能测试(对应 integration 子目录)。这些子目录中的测试代码使用了 Tcl 语言(通用的脚本语言)进行编写,主要目的就是方便进行测试。

  • utils 目录

    这个目录里面是在 Redis 开发过程中的一些辅助性功能,包括用于创建 Redis Cluster 的脚本、用于测试 LRU 算法效果的程序,以及可视化 rehash 过程的程序。

代码分类(忽略.h头文件)

数据类型:
  • String(t_string.c、sds.c、bitops.c)
  • List(t_list.c、ziplist.c、quicklist.c)
  • Hash(t_hash.c、ziplist.c、dict.c)
  • Set(t_set.c、intset.c)
  • Sorted Set(t_zset.c、ziplist.c、dict.c)
  • HyperLogLog(hyperloglog.c)
  • Geo(geo.c、geohash.c、geohash_helper.c)
  • Stream(t_stream.c、rax.c、listpack.c)
全局:
  • Serverserver.c-->main入口、anet.c)
  • Object(object.c)
  • 键值对(db.c)
  • 事件驱动(ae.c、ae_epoll.c、ae_kqueue.c、ae_evport.c、ae_select.c、networking.c)
  • 内存回收(expire.c、lazyfree.c)
  • 数据替换(evict.c)
  • 后台线程(bio.c)
  • 事务(multi.c)
  • PubSub(pubsub.c)
  • 内存分配(zmalloc.c)
  • 双向链表(adlist.c)
高可用&集群:
  • 持久化:RDB(rdb.c、redis-check-rdb.c)、AOF(aof.c、redis-check-aof.c)
  • 主从复制(replication.c)
  • 哨兵(sentinel.c)
  • 集群(cluster.c)
辅助功能:
  • 延迟统计(latency.c)
  • 慢日志(slowlog.c)
  • 通知(notify.c)
  • 基准性能(redis-benchmark.c)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值