【Redis-6.0.8】Redis源码分析入门

目录

1.源码概述

1.1 src文件夹下的摘取

1.2 核心代码分布

1.2.1 基本的数据结构

1.2.2 Redis数据类型的底层实现

1.2.3 Redis数据库的实现

1.2.4 Redis服务端和客户端实现

1.2.5 其他

2.阅读的一些小尝试

2.1 服务端的启动点

2.2 服务端的关键步骤

扫描二维码关注公众号,回复: 12943877 查看本文章

2.2.1 setlocale

2.2.2 设置内存溢出的回调函数

2.2.3 初始化静态区的循环冗余校验表crc64_table

3.代码调试初体验


1.源码概述

1.1 src文件夹下的摘取

本图引自《Redis5 设计与源码分析》中的1.3节.server.c为服务端程序,redis-cli.c为客户端程序

1.2 核心代码分布

1.2.1 基本的数据结构

(1)动态字符串sds.c
(2)整数集合intset.c
(3)压缩列表ziplist.c
(4)快速链表quicklist.c
(5)字典dict.c
(6)Streams的底层实现结构listpack.c和rax.c

1.2.2 Redis数据类型的底层实现

(1)Redis对象object.c
(2)字符串t_string.c
(3)列表t_list.c
(4)字典t_hash.c
(5)集合及有序集合t_set.c和t_zset.c
(6)数据流t_stream.c

1.2.3 Redis数据库的实现

(1)数据库的底层实现db.c
(2)持久化rdb.c和aof.c

1.2.4 Redis服务端和客户端实现

(1)事件驱动ae.c和ae_epoll.c
(2)网络连接anet.c和networking.c
(3)服务端程序server.c
(4)客户端程序redis-cli.c

1.2.5 其他

(1)主从复制replication.c
(2)哨兵sentinel.c
(3)集群cluster.c
(4)其他数据结构,如hyperloglog.c、geo.c等
(5)其他功能,如pub/sub、Lua脚本

2.阅读的一些小尝试

2.1 服务端的启动点

D:\005-01-代码\001-开源项目源码\007-redis\redis-6.0.8.tar\redis-6.0.8\redis-6.0.8\src\server.c中的main函数

2.2 服务端的关键步骤

2.2.1 setlocale

setlocale()函数的作用

2.2.2 设置内存溢出的回调函数

zmalloc_set_oom_handler(redisOutOfMemoryHandler);

2.2.3 初始化静态区的循环冗余校验表crc64_table

 crc64_init();

3.代码调试初体验

cd /home/muten/module/redis-6.0.9/src(仅仅是我的机器上)
gdb ./redis-server
>l server.c:5097,server.c:5150
>r
>i thread
>thread 1
>bt
>thread 2
>bt
>thread 3
>bt
>thread 4
>bt

猜你喜欢

转载自blog.csdn.net/Edidaughter/article/details/115264739
今日推荐