Redis经典五大类型源码及底层实现
一、Redis数据类型的底层数据结构
SDS
动态字符串- 双向链表
- 压缩列表
zpilist
- 哈希表
hashtable
- 调表
skiplist
- 整数集合
intset
- 快速列表
quicklist
- 紧凑列表
listpack
二、Redis源码地址
Github:https://github.com/redis/redis
三、源码分析参考书
- Redis设计与实现
- Redis5设计与源码分析
四、Redis源码核心部分
4.1 源码分析思路
- 怎么看
- 外面考什么,看什么
- 分类
4.2 Redis基本的数据结构(骨架)
- 简单动态字符串 sds.c
- 整数集合 intset.c
- 压缩列表 ziplist.c
- 快速链表 quicklist.c
- listpack
- 字典 dict.c
4.3 Redsi数据库的实现
- 数据库底层实现 db.c
- 持久化 rdb.c和aof.c
4.4 Redis服务端和客户端实现
- 事件驱动ae.c和ae_epoll.c
- 网络连接anet.c和networking.c
- 服务端程序server.c
- 客户端程序redis-cli.c
4.5 其他
- 主从复制replication.c
- 哨兵sentinel.c
- 集群cluster.c
- 其他数据结构 hyperloglog.c、geo.c
- 其他功能 pub/sub、lua脚本
五、Redis的KV键值对到底是什么
redis是key-value存储系统:
-
key一般都是String类型的字符串对象
-
value类型则为redis对象(RedisObject)
value可以是字符串对象,也可以是集合数据类型的对象,比如List、Hash、Set、Zset
六、五大数据结构底层C语言源码分析
Redis 6.0
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZSzoTZ18-1692553049425)(/Users/coder/Library/Application Support/typora-user-images/image-20230319142919367.png)]
Redis 7.0
调表: