文章目录
- 一、 面试题
- 二、 源码分析
- 1. 源码导入
- 2. 源码核心部分
一、 面试题
1. redis跳跃列表了解吗?这个数据结构有什么缺点?
2. redis项目里面怎么用? redis的数据结构都了解哪些?
3. redis的zset底层实现?
redis的底层数据结构主要有下面几种:
SDS动态字符串、双向链表、压缩列表ziplist、哈希表hashtable、跳表skiplist、整数集合intset、快速结合quicklist、紧凑列表listpack
二、 源码分析
1. 源码导入
我们可以在github上下载指定的源码包,然后source目录下就是redis的源码。redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存、分布式、可选持久性的键值对存储数据库,并提供了多种语言的API。
2. 源码核心部分
- Redis基本的数据结构(源码骨架)
redis对象:object.c
字符串:t_string.c
列表:t_list.c
字典:t_hash.c
集合及有序集合:t_set.c
和t_zet.c
数据流:t_stream.c
简单动态字符串:sds.c
整数集合intset:intset.c
压缩列表:ziplist.c
快速链表:quicklist.c
紧凑列表listpack:listpack.c
字典:dict.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脚本等