发布于 2015-06-22 09:01:26 | 341 次阅读 | 评论: 0 | 来源: 网络整理
分区是一种将数据分成多个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的实例。