1.产生背景的原因
当系统的业务量大的时候,一台Redis是无法满足需求的,需要引入多台redis共同完成缓存任务,这样便带来了一个 数据(key)如何分的问题
2.三台Redis搭建的步骤
3.计算分片的算法
3.1Hash取余算法
步骤
步骤
- 取每台 redis的ip:port 字符串,并取其hashCode
- 将hashCode映射到一个 长度为 0~42亿多的hash环上
- 用户操作设置的key-value对,key的也映射到hash环上
- key-value对顺时针寻找redis节点
- 若节点存在权重,可引入虚拟节点
- 原理图(用达内的图了)
a.redis节点映射到hash环
b.key-value对映射到hash环,瞬时针找最接近的node即可
c.引入虚拟节点
缺点
计算步骤
- 获取key的hashCode值
- 对hashCode值做CRC16算法计算
- 将得到的结果对16384(2)进行取余,所得的结果是槽道号的值[0~16383]
2.CRC16算法
- 用于生成文件的校验码。以此来检验数据通过文件、网络传输过程中的正确性
- 其主要步骤,将原数据的01编码,除以 CRC16除数,余数加入原数据编码尾部即可
- 接收方需要将数据除以CRC16码,最后查看结果是否为0??