Redis – 分区
Redis – 分区
分区是将您的数据拆分为多个 Redis 实例的过程,以便每个实例仅包含您的密钥的一个子集。
分区的好处
-
它允许使用多台计算机内存的总和来创建更大的数据库。如果不进行分区,您将受到单台计算机可以支持的内存量的限制。
-
它允许将计算能力扩展到多核和多台计算机,并将网络带宽扩展到多台计算机和网络适配器。
分区的缺点
-
通常不支持涉及多个键的操作。例如,如果两个集合存储在映射到不同 Redis 实例的键中,则不能执行它们之间的交集。
-
不能使用涉及多个键的 Redis 事务。
-
分区粒度是关键,因此不可能像非常大的排序集那样使用单个巨大的键对数据集进行分片。
-
使用分区时,数据处理更加复杂。例如,您必须处理多个 RDB/AOF 文件,并且要获得数据备份,您需要聚合来自多个实例和主机的持久性文件。
-
添加和删除容量可能很复杂。例如,Redis Cluster 支持大部分透明的数据重新平衡,能够在运行时添加和删除节点。但是,客户端分区和代理等其他系统不支持此功能。一种称为预分片的技术在这方面有所帮助。
分区类型
Redis 中有两种可用的分区类型。假设我们有四个 Redis 实例,R0、R1、R2、R3 和许多代表用户的键,如 user:1、user:2、…等等。
范围分区
范围分区是通过将对象范围映射到特定 Redis 实例来实现的。假设在我们的示例中,ID 0 到 ID 10000 的用户将进入实例 R0,而 ID 10001 到 ID 20000 的用户将进入实例 R1,依此类推。
哈希分区
在这种类型的分区中,使用哈希函数(例如模数函数)将键转换为数字,然后将数据存储在不同的 Redis 实例中。