Redis 分区
-
分区
分区是将数据拆分为多个Redis实例的过程,因此每个实例将只包含键的一个子集。 -
分区的好处
- 它允许使用许多计算机的内存总和来创建更大的数据库。如果不进行分区,则只能使用一台计算机可以支持的内存量。
- 它允许将计算能力扩展到多核和多台计算机,并将网络带宽扩展到多台计算机和网络适配器。
-
分区的缺点
- 通常不支持涉及多个key的操作。例如,如果两个集合存储在映射到不同Redis实例的键中,则无法执行它们的相交。
- 不能使用涉及多个key的Redis事务。
- 分区粒度是key,因此无法使用单个大键(如非常大的排序集)对数据集进行分片。
- 使用分区时,数据处理更加复杂。例如,您必须处理多个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,依此类推。哈希分区在这种类型的分区中,使用哈希函数(例如模函数)将key转换为数字,然后将数据存储在不同的Redis实例中。