分区是将所有的数据分割到多个Redis实例的过程,所以每个Redis实例存放的是所有键值的子集。
Redis分区主要有两个目标:
1)允许使用多台计算机的内存来存放更大的数据。如果不做分区的话,单台计算机的内存又限制。
2)使用多台计算的计算能力和网络带宽
有许多不同的分区场景,假设有4个Redis实例R0,R1,R2,R3,有很多表示用户的键值比如user:1,user:2,user:3....。有很多方法使指定的键值映射到指定的Redis实例上。
其中一种分区方法就是range partitioning,就是根据对象的范围映射到特定的Redis实例上,比如用户的ID从0到10000存储到R0上,ID从10001到20000存储到R1上。但是这种分区方法有个不利条件就是需要维护一个键值范围到后端Redis实例的范围表。这张表需要维护并且每种对象都需要一张这种表。因此,这种分区方式常常不是理想的分区方式。
另外一种分区方式就是hash partitioning.这种分区模式对于任何键值都有效。很多Redis客户端程序和代理工具支持的一种高级hash partitioning就是consistent hashing。
不同的Redis分区实现方式:
Client side partitioning
Proxy assisted partitioning
Query routing
Ubuntu 14.04下Redis安装及简单测试
Ubuntu 12.10下安装Redis(图文详解)+ Jedis连接Redis
CentOS 6.3安装Redis