编辑
2024-06-13
💌中间键
00

9.4 客户端连接

9.4.2 Redis Sentinel客户端基本实现原理

实现一个Redis Sentinel客户端的基本步骤如下:

  1. 遍历Sentinel节点集合获取一个可用的Sentinel节点,后面会介绍Sentinel节点之间可以共享数据,所以从任意一个Sentinel节点获取主节点信息都是可以的,如图9-22所示。
  2. 通过sentinel get-master-addr-by-name master-name这个API来获取对应主节点的相关信息,如图9-23所示。
  3. 验证当前获取的“主节点”是真正的主节点,这样做的目的是为了防止故障转移期间主节点的变化,如图9-24所示。
编辑
2024-06-12
💌中间键
00
编辑
2024-06-12
💌中间键
00

8.1 内存消耗

理解Redis内存,首先需要掌握Redis内存消耗在哪些方面。

有些内存消耗是必不可少的,而有些可以通过参数调整和合理使用来规避内存浪费。

内存消耗可以分为进程自身消耗和子进程消耗。

编辑
2024-06-12
💌中间键
00

Redis是典型的单线程架构,所有的读写操作都是在一条主线程中完成的。

当Redis用于高并发场景时,这条线程就变成了它的生命线。如果出现阻塞,哪怕是很短时间,对于我们的应用来说都是噩梦。

导致阻塞问题的场景大致分为内在原因和外在原因:

  • 内在原因包括:不合理地使用API或数据结构、CPU饱和、持久化阻塞等。
  • 外在原因包括:CPU竞争、内存交换、网络问题等。
编辑
2024-06-12
💌中间键
00

在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他机器,满足故障恢复和负载均衡等需求。

Redis也是如此,它为我们提供了复制功能,实现了相同数据的多个Redis副本。

复制功能是高可用Redis的基础,后面章节的哨兵和集群都是在复制的基础上实现高可用的。

复制也是Redis日常运维的常见维护点。因此深刻理解复制的工作原理与使用技巧对我们日常开发运维非常有帮助。