标签:
分区是把数据分割到多个Redis实例的处理过程,每个redis实例只是保存你所有key的一个子集。
在redis server中,分区有两个主要目标:
在分区里,redis的特性运行的不是很好:
它有不同的分区准则。想像一下,我们有四个redis实例R0, R1, R2, R3,还有很多key像这样user:1
, user:2
..., 我们可以找到不同的方法把给定的键存储到其中一个实例。
其中一个最简单的方法是执行范围分区,把对象范围映射到具体的redis实例中,这是一个现实的方案。例如:用户users的id从0到10000放入到实例R0,从10001到20000放到实例R1等等。
这种体系是可以工作,并且已经切实用到实践中了。但它也有缺点,它需要一张额外的表来存储这个范围指向哪个redis实例。不同的对象都需要一张这样的表,你需要管理它们。由此看出,范围分区比其它分区方法效率低,因此不那么爱欢迎。
除了范围分区,还有一个hash分区可选。这个方案对任何key都适用,也无需是object_name:<id>
这种形式,像下面描述的一样简单:
crc32
hash function)。例如: 一个key名为foobar
,调用crc32(foobar)
,将会输出数字93024922
。93024922
取模 4 得到 2,我们就知道foobar
这个key应该被存储到R2这个实例上。注意:许多编程语言中是用 % 取模,其实就是除法的余数。
还有许多其它的方法进行分区,但通过这两个例子你应该已经知道它的思想了。还有一种更高级的hash分区形式,叫作consistent hashing, 它通过一些redis客户端和代理 来实现的。
分区可以通过一个软件的不同部分来实现。
标签:
原文地址:http://www.cnblogs.com/limx/p/5685627.html