redis是一个开源的内存数据库,当然也可以将内存数据持久化到磁盘文件.redis属于一种NoSQL类型的数据库,它的设计目标是内存数据操作的高性能,当然也有一些高可用性的功能.
redis是以ANSI C语言写的,其中调用了部分符合POSIX规范的系统调用,因此官方版本可以运行在linux, BSD等POSIX操作系统上,也因此不支持windows操作系统.redis是一个自包含的系统,不需要依赖第三方库.更多关于redis的介绍请参考其官方网站https://redis.io/ .
redis-beta3版本是作者几乎最开始发布的版本,前两个beta版本不支持set数据类型.其代码量比较少,适合分析其流程和数据结构,也可以了解作者的初始设计是为了解决哪些问题场景.
redis-beta3版本的目录结构及其包含的文件,如下图所示:
目录client-libraries下面是ruby实现的客户端库,用来封装redis命令.
adlist文件有关链表操作的逻辑.
ae文件是事件处理框架.
anet是有关socket网络接口的处理逻辑.
dict是哈希表处理逻辑.
picol文件是测试用,redis服务器不包含该文件.
redis是相关命令处理流程.
sds是redis的string处理逻辑.
另外,README文件中有redis协议的简单介绍,redis.conf是配置文件,redis服务启动时,可以使用配置文件中的参数覆盖默认其默认值.
redis-beta3版本源码分析包括如下几部分:
redis启动初始化过程
redis事件循环处理框架
redis协议解析
操作string类型value的redis协议
操作list类型value的redis协议
操作set类型value的redis协议
redis的key操作命令
redis内存数据持久化操作命令
redis数据库操作命令