24、从哨兵Leader选举学习Raft协议实现(下)

你好,我是蒋德钧。 上节课,我给你介绍了Raft协议的基本流程,以及哨兵实例工作的基本过程。哨兵是通过serverCron函数的周期性执行,进而在serverCron中调用sentinelTimer函数,实现周期性处理哨兵相关的时间事件。而senti...

Redis源码剖析与实战

25、Pub、Sub在主从故障切换时是如何发挥作用的

你好,我是蒋德钧。 在前面两节课,我们学习了哨兵工作的基本过程:哨兵会使用sentinelRedisInstance结构体来记录主节点的信息,在这个结构体中又记录了监听同一主节点的其他哨兵的信息。那么,一个哨兵是如何获得其他哨兵的信息的呢? 这其实就...

Redis源码剖析与实战

26、从Ping、Pong消息学习Gossip协议的实现

你好,我是蒋德钧。 从这节课开始,我们又将进入一个新的模块:“Redis Cluster”模块。在这个模块中,我会带你了解Redis Cluster的关键功能实现,包括了Gossip协议通信、集群关键命令和数据迁移等机制的设计与实现。 通过这些课程的...

Redis源码剖析与实战

27、从MOVED、ASK看集群节点如何处理命令

你好,我是蒋德钧。 在上节课一开始我给你介绍了,我们在Redis Cluster这个模块中会学习三部分内容:节点间如何传递信息和运行状态、节点如何处理命令,以及数据如何在节点间迁移。那么通过上节课的学习,现在我们已经了解了Gossip协议的基本实现,...

Redis源码剖析与实战

28、Redis Cluster数据迁移会阻塞吗

你好,我是蒋德钧。 上节课,我给你介绍了Redis Cluster节点处理命令的过程。现在你知道,在这个过程中,节点会调用getNodeByQuery函数检查访问的key所属的节点,如果收到命令的节点并不是key所属的节点,那么当前节点就会生成CLU...

Redis源码剖析与实战

29、如何正确实现循环缓冲区

你好,我是蒋德钧。 从今天开始,我们就进入了这门课程的最后一个模块,也就是“编程技巧模块”。Redis作为一个广泛使用的系统,除了它自身的功能实现和性能优化值得我们学习以外,它源码中的编程技巧也同样值得我们去了解和掌握。 在这个模块中,我会带你学习R...

Redis源码剖析与实战
1345678