📜  Redis-分区

📅  最后修改于: 2020-11-26 08:20:57             🧑  作者: Mango


分区是将数据拆分为多个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实例中。