redis源码阅读
序言
redis是由c语言编写的一款高性能nosql数据库,其代码量小,使用的数据结构和算法也非常的经典,很有利于我们学习数据结构和算法。
当前,redis缓存数据库被应用于各个大型项目中作为缓存中间件,其应用范围很广泛,研读其源码能让我们更加清楚redis的内部机制,更好的操作redis。
现在让我们一起进入redis的源码世界,畅游数据结构与算法的海洋。
阅读源码的准备
在阅读源码之前,我们首先要有两手准备,手头要有一本解析redis的书,能够让你快速的认识redis的各大模块,将redis的各个源码文件编组,一个模块一个模块的慢慢吃透。在这里,我给大家推荐一本书------ ,它非常透彻的解析redis中采用的数据结构和算法,搭配这本书看源码,着实是一种享受。
好了,现在开始!
redis源码编组
为了便于阅读源码,我根据自己理解,通过给源码文件功能不同分组。
事件驱动
1 2 3 4 5 6
| ae.h ae.c ae_epoll.c ae_evport.c ae_kqueue.c ae_select.c
|
网络
1 2 3
| anet.c anet.h networking.c
|
数据结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| adlist.h adlist.c ziplist.h ziplist.c zipmap.h zipmap.c quicklist.h quicklist.c dict.h dict.c sds.h sdsalloc.h sds.c intset.h intset.c rax.h rax_malloc.h rax.c t_hash.c t_list.c t_set.c stream.h t_stream.c t_string.c t_zset.c listpack.h listpack_malloc.h listpack.c geo.h geo.c geohash.h geohash.c geohash_helper.h geohash_helper.c siphash.c
|
工具
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| crc64.h crc16.c crc64.c rand.h rand.c sha1.h sha1.c sort.c util.h util.c pqsort.h pqsort.c bitops.c debug.c debugmacro.h defrag.c lzf.h lzfP.h lzf_c.c lzf_d.c release.c help.h sparkline.h sparkline.c endianconv.h endianconv.c setproctitle.c
|
封装类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| atomicvar.h zmalloc.h zmalloc.c bio.h bio.c syncio.c notify.c object.c pubsub.c latency.h latency.c rio.h rio.c slowlog.h slowlog.c hyperloglog.c
|
测试
1 2 3 4
| memtest.c redis-benchmark.c testhelp.h redis-check-aof.c
|
数据操作
1 2 3 4 5 6 7 8
| aof.c rdb.h rdb.c db.c config.h config.c multi.c replication.c
|
平台兼容问题
1 2
| fmacros.h solarisfixes.h
|
redis基本信息
redis核心功能
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| blocked.c childinfo.c cluster.h cluster.c evict.c expire.c redismodule.h module.c redis-trib.rb scripting.c sentinel.c server.h server.c redis-cli.c lazyfree.c localtime.c
|
其他
1 2 3 4
| lolwut5.c lolwut.c mkreleasehdr.sh redisassert.h
|
以上,列举了redis的所有源码文件,并给源码文件做了简单的功能说明
参考文献