Redis Cluser
redis cluser是redis3.0推出的redis分布式解决方案,用来解决单机的瓶颈问题。
数据分区原理
分布式数据库首先要解决把整个数据集按照分区规则映射到多个节点的 问题,即把数据集划分到多个节点上,每个节点负责整体数据的一个子集。常用的分区方法有以下几种:
1. 节点取余分区
使用redis的键Key和节点的数量N,根据hash(Key)%N计算出这个Key应该分布在哪个节点上。
2. 一致性哈希分区
一致性哈希分区是为系统中每个节点分配一个token,范围一般在0~2^32,这些token构成一个哈希环。数据读写 执行节点查找操作时,先根据key计算hash值,然后顺时针找到第一个大于等于该哈希值的token节点。
3. 虚拟槽分区
Redis采用的虚拟槽分区是使用分散度良好的哈希函数CRC16 solt=CRC16(key)&16383
把所有数据映射到一个固定范围的整数集合0~16383中(槽),然后每个节点负责几个槽。
通过了解redis的分区原理我们可以很容易理解cluser相对于单机redis的一些限制。
- 只支持具有相同slot值的 key执行批量操作。
- 只支持多key在同一节点上的事务操 作,当多个key分布在不同的节点上时无法使用事务功能。
- key作为数据分区的最小粒度,因此不能将一个大的键值对象如 hash、list等映射到不同的节点。
- 复制结构只支持一层,从节点只能复制主节点,不支持嵌套树状复 制结构。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。