Redis 分区

2025 年 5 月 18 日 | 阅读需要 2 分钟

分区用于将您的 Redis 数据拆分到多个 Redis 实例中,以便每个实例仅包含您的键的一个子集。

它通常用于大型数据库。

分区类型

Redis 中有两种类型的分区

  • 范围分区
  • 哈希分区

范围分区

范围分区是执行分区最简单的方法之一。它通过将对象范围映射到特定的 Redis 实例来完成。

例如

假设您有 3000 个用户。因此您可以说 ID 0 到 ID 1000 的用户将进入实例 R0,而 ID 1001 到 ID 2000 的用户将进入实例 R1,ID 2001 到 ID 3000 的用户将进入实例 R2,依此类推。

哈希分区

哈希分区是范围分区的替代方案。在哈希分区中,使用哈希函数将键转换为数字,然后将数据存储在不同的 Redis 实例中。

Redis 分区的优势

  • 分区使您能够使用多台计算机的集体内存。例如:对于较大的数据库,您需要大量的内存,因此分区提供了来自不同计算机的内存总和。如果没有分区,您只能使用单台计算机可以支持的有限内存量。
  • 分区还用于将计算能力扩展到多个核心和多台计算机,以及将网络带宽扩展到多台计算机和网络适配器。

Redis 分区的缺点

分区有一些缺点,因为 Redis 的某些功能因分区而受阻。

  • 分区通常不支持具有多个键的操作。例如,如果两个集合存储在映射到不同 Redis 实例的键中,则无法执行两个集合之间的交集。
  • 分区不支持具有多个键的事务。
  • 分区粒度是键,因此无法对具有单个巨大键(例如非常大的排序集)的数据集进行分片。
  • 使用分区时,数据处理更加复杂,例如,您必须处理多个 RDB / AOF 文件,并且要备份数据,您需要聚合来自多个实例和主机的持久性文件。
  • 添加和删除容量可能很复杂。例如,Redis 集群主要支持透明的数据重新平衡,并能够在运行时添加和删除节点,但其他系统(如客户端分区和代理)不支持此功能。但是,一种称为预分片的技术可以帮助解决这个问题。