Redis - 分区

分区是将数据拆分为多个Redis实例的过程,因此每个实例只包含密钥的一个子集.

分区的好处

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

  • 它允许将计算能力扩展到多个核心和多台计算机,以及多个计算机和网络适配器的网络带宽.

分区的缺点

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

  • 涉及多个Redis事务的Redis事务密钥不能使用.

  • 分区granuliary是关键,因此不可能使用一个巨大的密钥(如一个非常大的排序集)对数据集进行分片.

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

  • 添加和删除容量可能很复杂.例如,Redis Cluster支持大多数透明的数据重新平衡,并能够在运行时添加和删除节点.但是,客户端分区和代理等其他系统不支持此功能.在这方面,一种称为 Presharding 的技术有帮助.

分区类型

Redis中有两种类型的分区.假设我们有四个Redis实例,R0,R1,R2,R3和许多代表用户的密钥:1,user:2,...等等.

范围分区

通过将对象范围映射到特定的Redis实例来完成范围分区.假设在我们的示例中,从ID 0到ID 10000的用户将进入实例R0,而从ID 10001到ID 20000的用户将进入实例R1,依此类推.

哈希分区

在这种类型的分区中,使用散列函数(例如模数函数)将密钥转换为数字,然后将数据存储在不同的Redis实例中.