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

10.1 数据分布

10.1.1 数据分布理论

分布式数据库首先要解决把整个数据集按照分区规则映射到多个节点的问题,即把数据集划分到多个节点上,每个节点负责整体数据的一个子集。

如图10-1所示。

需要重点关注的是数据分区规则。常见的分区规则有哈希分区和顺序分区两种,表10-1对这两种分区规则进行了对比。

编辑
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竞争、内存交换、网络问题等。