概述
整本书按前言写的,可以划分为四个部分:Redis数据与对象,单机数据库的实现,多机数据库的实现,独立功能的实现。下面将按这进行分别整理。
Redis数据与对象
- Redis五种数据结构:string(字符串), list(列表), hash(哈希), set(集合), sort set(有序集合)。
- 简单动态字符串的实现,跟C语言的字符串的区别。
- Redis链表实现及特点:双端,无环,带表头表尾带长度计数,多态
- 字典:采用的是hash, 采用hash的话,就会有键冲突及rehash过程,怎么来处理。
- 跳跃表: 跳跃表算法的原理及实现。
- 整数集合:数据结点的实现,升级及降级的过程。
- 压缩列表:压缩列表的构成。
- 对象:五种数据结构对象的实现,Redis中内存回收策略,对象共享机制。
单机数据库的实现
- 数据库的概念及常用的命令操作(选择数据库,设置过期时间等)
- 过期键策略:定时删除,惰性删除,定期删除。这三种各自的特点。这些也经常能在公众号里看见。
- 持久化的方式:RDB持久化,AOF持久化。这两种方式的实现及各自操作的命令。这块各大公众号讲的会很多。各自的优缺点。
- RDB的文件结构。
- Redis事件的实现机制。涉及到IO多路复用的实现。
- 客户端:相应的命令及实现的逻辑,如创建,关闭等。这块真研究的话,会涉及到socket编程。
- 服务器:处理命令的流程。内部实现的代码,有兴趣可以研究。
多机数据库的实现
- 服务器复制的流程,新旧版本的区别(新的版本重点改进了断线后复制的效率问题)
- 集群模式:Sentinel及集群模式。
- Sentinel模式:保证高可用,怎么部署。选主的逻辑,还有怎么实现故障转移。
- 集群模式:保证内存,怎么部署。槽的概念(之前看过一篇文章讲为什么Redis Cluster会设计成16384个槽的),复制及故障转移。
独立功能的实现
- 发布订阅:涉及到频道及模式的订阅,可以利用这个来实现一个消息队列。
- 事务:Redis如何保证一致性,原子性和隔离性。
- Lua脚本:跟Lua脚本的集成,通过EVAL命令实现。
- 排序:排序的命令,sort可以设置升降序,限制长度,是否保存,获取外部键等。
- 二进制位数组:二进制位统计算法(遍历,查表,统计算法),及Redis内部实现。
- 慢查询日志:相关配置及介绍。
- 监视器:相关配置及介绍。
其它
除了上面书中介绍的这些,Redis还有一些经常能看到的一些问题:
- 用Redis怎么来实现分布式锁。Setnx,RedLock, Redission。
看完整个书之后,总结出来的东西大概就这些。
PS:开了一个公众号,感兴趣的可以关注一下~