redis代码实现,Redis源码解析一代码结构
redis代码实现,Redis源码解析一代码结构对于服务器端,首先通过commandCommand函数对服务器端的指令实现过程进行解析。随后通过main函数对于服务器端框架做解析。Server相关文件 -adlist.c -quicklist.c -ae.c -anet.c -dict.c -server.c -sds.c -zmalloc.c -lzf_c.c -lzf_d.c -pqsort.c -zipmap.c -sha1.c -ziplist.c -release.c -networking.c -util.c -object.c -db.c -replication.c -rdb.c -t_string.c -t_list.c -t_set.c -t_zset.c -t_hash.c -config.c -aof.c -pubsub.c -multi.c -debug.c -sort.c -intset.c -syncio.
简述Redis是一种数据结构服务器。通过不同的指令可以从Redis服务器上获取可变的数据结构。在交互上,Redis使用服务端-客户端模式进行交互。采用TCP sockets进行通讯。不同的进程可以查询和修改共享的数据结构。
Redis的特性包括:
(1)Redis关注将数据结构写入磁盘,所以Redis的数据是非易失性的。
(2)Redis注重内存使用效率,所以相比其他高级语言设定的数据结构会使用更少的内存。
(3)Redis提供了很多与数据库类似的特性,所以可以作为数据库使用。
代码结构本文以Redis 6.2版本作为目标。根据Redis的软件结构,可以将代码分为服务器端和客户端两部分。
对于服务器端,server.c是它的入口。对于客户端,redis-cli.c是它的入口。
Server相关文件
-adlist.c
-quicklist.c
-ae.c
-anet.c
-dict.c
-server.c
-sds.c
-zmalloc.c
-lzf_c.c
-lzf_d.c
-pqsort.c
-zipmap.c
-sha1.c
-ziplist.c
-release.c
-networking.c
-util.c
-object.c
-db.c
-replication.c
-rdb.c
-t_string.c
-t_list.c
-t_set.c
-t_zset.c
-t_hash.c
-config.c
-aof.c
-pubsub.c
-multi.c
-debug.c
-sort.c
-intset.c
-syncio.c
-cluster.c
-crc16.c
-endianconv.c
-slowlog.c
-scripting.c
-bio.c
-rio.c
-rand.c
-memtest.c
-crcspeed.c
-crc64.c
-bitops.c
-sentinel.c
-notify.c
-setproctitle.c
-blocked.c
-hyperloglog.c
-latency.c
-sparkline.c
-redis-check-rdb.c
-redis-check-aof.c
-geo.c
-lazyfree.c
-module.c
-evict.c
-expire.c
-geohash.c
-geohash_helper.c
-childinfo.c
-defrag.c
-siphash.c
-rax.c
-t_stream.c
-listpack.c
-localtime.c
-lolwut.c
-lolwut5.c
-lolwut6.c
-acl.c
-gopher.c
-tracking.c
-connection.c
-tls.c
-sha256.c
-timeout.c
-setcpuaffinity.c
-monotonic.c
-mt19937-64.c
Client相关文件
-anet.c
-adlist.c
-dict.c
-redis-cli.c
-zmalloc.c
-release.c
-ae.c
-crcspeed.c
-crc64.c
-siphash.c
-crc16.c
-monotonic.c
-cli_common.c
-mt19937-64.c
解析顺序
本文根据自底向上的分析方式,从基础函数开始,将服务器端与客户端的源代码进行解析。
对于服务器端,首先通过commandCommand函数对服务器端的指令实现过程进行解析。随后通过main函数对于服务器端框架做解析。
server.c(commandCommand)
对于客户端,直接通过main函数对客户端与服务器端的交互模式做解析。
redis-cli.c