[Redis-6.0.8] Redisソースコード分析の概要

目次

1.ソースコードの概要

1.1srcフォルダーの下に抽出します

1.2コアコードの配布

1.2.1基本的なデータ構造

1.2.2Redisデータ型の基本的な実装

1.2.3Redisデータベースの実装

1.2.4Redisサーバーとクライアントの実装

1.2.5その他

2.読むためのいくつかの小さな試み

2.1サーバーの開始点

2.2サーバーの主な手順

2.2.1setlocale

2.2.2メモリオーバーフローのコールバック関数を設定する

2.2.3静的領域の巡回冗長検査テーブルcrc64_tableを初期化します

3.コードデバッグの最初の経験


1.ソースコードの概要

1.1srcフォルダーの下に抽出します

この図は、「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.2Redisデータ型の基本的な実装

(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.3Redisデータベースの実装

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

1.2.4Redisサーバーとクライアントの実装

(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-code \ 001-メイン関数のオープンソースプロジェクトのソースコード\ 007-redis \ redis-6.0.8.tar \ redis-6.0.8 \ redis-6.0.8 \ src \ server.c

2.2サーバーの主な手順

2.2.1setlocale

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