redis分片实现
一.为什么使用分片?
redis占内存小,如果分配的内存太大会造成不便
二.分片搭建
(一)分片规划
3台redis,端口号6379、9380、6381,如果需要准备多天台redis,则准备多个配置文件即可,注意其中的端口号
(二)准备多台redis
1.先将原来的redis服务关掉,redis-cli -p 6379 shutdown
2.创建目录shards(碎片意),复制配置文件
3.修改redis端口
进入shards文件,vim+文件名,进入编辑页面
???? port 快速定位到port
4.启动端口
redis-server 6379.conf & redis-server 6380.conf & redis-server 6381.conf &
三.一致性hash算法
(一)一致性hash算法原理说明
目的:解决数据如何在分布式环境下进行存储
hash值取值区间:8位16进制数,共有2^32种可能性
node节点:ip+port
1.数据如何存储
先将key值进行hash运算,然后顺时针寻找node进行存储
2.node变化的影响
节点中对应的数据可以动态的迁移。
原则:应该使影响到的数据尽可能的小
(二)一致性hash算法的特性
1.平衡性(均衡性)
hash运算的结果尽可能平均分配到各个节点
被动技能:动态平衡数据,增加虚拟节点,做不到绝对平均,只能是相对的
2.单调性
指在新增或者删除节点时,不影响系统正常运行,可以实现动态的数据迁移
3.分散性
数据应该分散的存在分布式集群中的各个节点,不必每个节点都存储所有的数据,“鸡蛋不要放在一个篮子里”。