1970-01-01

15 为什么LRU算法原理和代码实现不一样?从这节课开始,我们就进入了课程的第三个模块:缓存模块。在接下来的三节课当中,我会给你详细介绍 LRU、LFU 算法在 Redis 源码中的实现,以及 Redis 惰性删除对缓存的影响。 学习这部分内容,一方...

1970-01-01

16 LFU算法和其他算法相比有优势吗?上节课我给你介绍了 Redis 对缓存淘汰策略 LRU 算法的近似实现。其实,Redis 在 4.0 版本后,还引入了 LFU 算法,也就是 最不频繁使用 (Least Frequently Used,LFU)...

1970-01-01

17 Lazy Free会影响缓存替换吗?Redis 缓存淘汰算法的目的,其实是为了在 Redis server 内存使用量超过上限值的时候,筛选一些冷数据出来,把它们从 Redis server 中删除,以保证 server 的内存使用量不超出上限...

1970-01-01

18 如何生成和解读RDB文件?从今天这节课开始,我们又将进入一个新的模块,也就是可靠性保证模块。在这个模块中,我会先带你了解 Redis 数据持久化的实现,其中包括 Redis 内存快照 RDB 文件的生成方法,以及 AOF 日志的记录与重写。了解...

1970-01-01

19 AOF重写(上):触发时机与重写的影响我们知道,Redis 除了使用内存快照 RDB 来保证数据可靠性之外,还可以使用 AOF 日志。不过,RDB 文件是将某一时刻的内存数据保存成一个文件,而 AOF 日志则会记录接收到的所有写操作。如果 Re...

1970-01-01

20 AOF重写(下):重写时的新写操作记录在哪里?在上节课,我给你介绍了 AOF 重写过程,其中我带你重点了解了 AOF 重写的触发时机,以及 AOF 重写的基本执行流程。现在你已经知道,AOF 重写是通过重写子进程来完成的。 但是在上节课的最后,...

1970-01-01

21 主从复制:基于状态机的设计与实现这节课,我想跟你聊聊 Redis 是如何基于状态机的设计思路,来实现主从复制的。 主从复制技术我们应该都比较熟悉,因为在使用 Redis 或 MySQL 数据库时,我们经常会使用主从复制来实现主从节点间的数据同步...

1970-01-01

22 哨兵也和Redis实例一样初始化吗?这节课,我们一起来看看 Redis 是如何在源码中实现哨兵机制的。 我们知道,Redis 主从复制是保证 Redis 可用性的一个重要手段。而一旦 Redis 主节点发生故障,哨兵机制就会执行故障切换。这个故...

1970-01-01

23 从哨兵Leader选举学习Raft协议实现(上)在上节课,我们了解了哨兵实例的初始化过程。哨兵实例一旦运行后,会周期性地检查它所监测的主节点的运行状态。当发现主节点出现客观下线时,哨兵实例就要开始执行故障切换流程了。 不过,我们在部署哨兵实例时...

1970-01-01

25 PubSub在主从故障切换时是如何发挥作用的?在前面两节课,我们学习了哨兵工作的基本过程:哨兵会使用 sentinelRedisInstance 结构体来记录主节点的信息,在这个结构体中又记录了监听同一主节点的其他哨兵的信息。 那么,一个哨兵是...

1141516171866