Redis - 分区



分区是将数据拆分成多个 Redis 实例的过程,这样每个实例只包含键的一个子集。

分区的优势

  • 它允许使用许多计算机的内存总和来创建更大的数据库。如果没有分区,则仅限于单台计算机可以支持的内存量。

  • 它允许将计算能力扩展到多个内核和多台计算机,并将网络带宽扩展到多台计算机和网络适配器。

分区的缺点

  • 通常不支持涉及多个键的操作。例如,如果键映射到不同的 Redis 实例,则无法执行两个集合之间的交集。

  • 无法使用涉及多个键的 Redis 事务。

  • 分区的粒度是键,因此无法对具有单个巨大键(例如非常大的有序集合)的数据集进行分片。

  • 使用分区时,数据处理更复杂。例如,您必须处理多个 RDB/AOF 文件,要获取数据的备份,需要聚合来自多个实例和主机的持久性文件。

  • 添加和删除容量可能很复杂。例如,Redis 集群主要支持通过能够在运行时添加和删除节点来透明地重新平衡数据。但是,其他系统(如客户端分区和代理)不支持此功能。“预分片”技术在这方面有所帮助。

分区类型

Redis 中有两种可用的分区类型。假设我们有四个 Redis 实例 R0、R1、R2、R3 和许多表示用户的键,例如 user:1、user:2 等。

范围分区

范围分区是通过将对象的范围映射到特定的 Redis 实例来实现的。例如,在我们的示例中,ID 为 0 到 10000 的用户将进入实例 R0,而 ID 为 10001 到 20000 的用户将进入实例 R1,依此类推。

哈希分区

在这种类型的分区中,使用哈希函数(例如模数函数)将键转换为数字,然后将数据存储在不同的 Redis 实例中。

广告