Redis 分区
分区是将数据分割成多个Redis实例的过程,每个实例只包含一部分键。
分区的优点
- 它允许使用许多计算机的内存总和来存储更大的数据库。如果没有分区,您将受限于单台计算机可以支持的内存量。
-
它允许将计算能力扩展到多个核心和多个计算机,以及将网络带宽扩展到多个计算机和网络适配器。
分区的缺点
-
通常不支持涉及多个键的操作。例如,如果存储在映射到不同Redis实例的键中的两个集合进行交集运算,则无法执行此操作。
-
无法使用涉及多个键的Redis事务。
-
分区的粒度是键,因此无法使用单个大键(例如非常大的排序集)分割数据集。
-
使用分区时,数据处理更复杂。例如,您必须处理多个RDB / AOF文件,并且要备份数据,您需要从多个实例和主机汇总持久性文件。
-
添加和删除容量可能会很复杂。例如,Redis Cluster在运行时支持数据重新平衡的能力,能够动态添加和删除节点。但是,诸如客户端分区和代理的其他系统不支持此功能。一种称为 预分片 的技术有助于解决这个问题。
分区类型
Redis提供了两种分区类型。假设我们有四个Redis实例:R0,R1,R2,R3,并且有许多代表用户的键,如user:1,user:2,…等等。
范围分区
范围分区通过将对象范围映射到特定的Redis实例来实现。假设在我们的示例中,ID从0到10000的用户将进入实例R0,而ID从10001到20000的用户将进入实例R1,依此类推。
哈希分区
在这种类型的分区中,使用哈希函数(例如模运算)将键转换为数字,然后将数据存储在不同的Redis实例中。