*redis分区

分区用于将 Redis 数据拆分为多个 Redis 实例,以便每个实例仅包含一部分 key。

它通常用于大型数据库。

*分区类型

redis 中有两种类型的分区:

  • 范围分区
  • 哈希分区

*范围分区

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

例如:

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

*哈希分区

散列分区是 Range 分区的替代方法。在散列分区中,散列函数用于将 key 转换为数字,然后将数据存储在不同的 Redis 实例中。

*Redis分区的优点

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

*Redis分区的缺点

分区存在一些缺点,因为 Redis 的某些功能受到分区的阻碍。

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