分区是一种将数据分成多个 Redis 的情况下,让每一个实例将只包含关键字的自己的过程。
分区的好处
- 它允许更大的数据库,使用的堕胎计算机的内存的综合。如果不分区,一台计算机有限的内存可以支持有限的数量。
- 它允许以大规模的计算能力,以多个内核和多个计算机,以及网络带宽向堕胎计算机和网络适配器在一起使用。
分区的确定
- 通常不支持涉及多个按键的操作。例如,不能两个集合之间执行交叉点,如果它们被存储在被映射到不同的 Redis 实例中的键。
- 涉及多个键的 Redis 事务不能被使用。
- 分区粒度是键,所以它不可能将分片数据集用一个硕大的键在一个非常大的有序集合。
- 当分区时,数据处理比较复杂,比如要处理多个 RDB/AOF 文件,使数据备份,需要从多个实例和主机聚集持久性文件。
- 添加和删除的能力可能很复杂。比如 Redis 集群支持有加,并在运行时删除节点不支持此功能的能力,但其他系统,如客户端的分区和代理的数据大多是透明平衡。有一个叫 Presharding 技术有助于解决这方面的问题。
分区的类型
redis 提供两种类型的分区。假设我们有四个 Redis 实例 R0,R1,R2,R3 和代表用户喜欢的用户很多键:user:1,user:2,...等等
范围分区
范围分区被映射对象转化为具体的 Redis 实例的范围内实现。假定在本例中用户 ID0~ID10000 将进入实例 R0,而用户形成 ID10001至20000号将进入实例R1等等。
散列分区
在这种类型的分区,一个散列函数(例如,莫属函数)被用于转换键成数字,然后数据被存储在不同地方-它们是不同 Redis 的实例。