IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 0.Redis源码目录 -> 正文阅读

[大数据]0.Redis源码目录

? Redis5.0.8的目录主要由四个部分组成deps、src、tests、utils。另外在根目录下有两个重要的配置文件,一个是redis.conf这个是Redis启动运行参数相关的配置文件,另一个是sentinel.conf哨兵功能的配置文件。

deps目录

? 通过阅读当前目录下的README.md可以知道deps目录下是第三方依赖和官方C语言客户端hiredis。当然,Redis也依赖libc(标准c库),只是这个库是来自系统平台的。

? jemalloc是一个第三方的内存管理器,可以用于替代默认的malloc, 当然,这是一个可选项,并非强制要求的。

Linenoise是一个开源的命令行工具,支持历史命令。轻量级别的,如果我们要用的话可以直接包含在代码里面,我没有仔细研究它的接口与实现,后面有机会用到了可以研究一下。

? lua,lua脚本。

src

? src目录下有一个modules目录包含了一个实现Redis module的示例代码,Redis其余功能模块的代码直接放在了src下面。

? 可能以后大部分时间都是在阅读这个目录下的代码。

? 这里面源码文件名字与功能模块基本能对应上。总体来讲可以分为几个方面:

  • 服务器本身相关功能比如服务器启动、配置读取、网络通信,内部是如何组织各种类型的数据的。
  • Redis里面各种数据结构的实现
  • 持久化,AOFRDB
  • 分布式集群相关的东西

具体源码结构:

数据类型:
- String(t_string.c、sds.c、bitops.c)
- List(t_list.c、ziplist.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)

全局:
- Server(server.c、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)

tests

? test这个目录里面是一些tcl写就的测试脚本。除了units单元测试,cluster集群功能测试、sentinel哨兵功能测试,intergratition主从复制功能测试,其他的为辅助这几个测试的目录。

utils

? 这里是一些辅助性功能的脚本或代码。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-13 11:30:47  更:2021-10-13 11:32:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:41:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码