-
Redis高性能主要原因:
- Redis是基于内存的存储数据库;
- Redis是单进程线程的服务(实际上一个正在运行的Redis Server肯定不止一个线程,但只有一个线程来处理网络请求),避免了不必要的上下文切换,同时不存在加锁/释放锁等同步操作;
- Redis使用多路I/O复用模型(select、poll、epoll),可以高效处理大量并发连接;
- Redis的数据结构是专门设计的,增、删、改、查等操作相对简单。
-
Redis源码描述
Redis源码主要放在src文件夹中,5.0源码文件如下。其中
server.c为服务端程序,redis-cli.c为客户端程序。- 基本的数据结构
- 动态字符串:sdc.c
- 整数集合:intset.c
- 压缩列表:ziplist.c
- 快速链表:quicklist.c
- 字典:dict.c
- Streams的底层实现结构:listpack.c 和 rax.c
- Redis数据类型的底层实现
- Redis对象object.c
- 字符串:t_string.c
- 列表:t_list.c
- 字典:t_hash.c
- 集合及有序集合:t_set.c 和 t_zset.c
- 数据流:t_stream.c
- Redis数据库的实现
- 数据库的底层实现:db.c
- 持久化:rdb.c 和 aof.c
- Redis服务端和客户端的实现
- 事件驱动:ae.c 和 ae_epoll.c
- 网络连接:anet.c 和 networking.c
- 服务端程序:server.c
- 客户端程序:redis-cli.c
- 其他
- 主从复制:replication.c
- 哨兵:sentinel.c
- 集群:cluster.c
- 其他数据结构:hyperloglog.c、geo.c等
- 其他功能:pub/sub、Lua脚本等
- 基本的数据结构
参考内容
- 《Redis5设计与源码分析》机械工业出版社 陈雷等编著