redis分片实现

一.为什么使用分片?

redis占内存小,如果分配的内存太大会造成不便

二.分片搭建

(一)分片规划

3台redis,端口号6379、9380、6381,如果需要准备多天台redis,则准备多个配置文件即可,注意其中的端口号

(二)准备多台redis

1.先将原来的redis服务关掉,redis-cli -p 6379 shutdown

2.创建目录shards(碎片意),复制配置文件

redis分片实现

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进行存储
redis分片实现

2.node变化的影响

节点中对应的数据可以动态的迁移。
原则:应该使影响到的数据尽可能的小

(二)一致性hash算法的特性

1.平衡性(均衡性)

hash运算的结果尽可能平均分配到各个节点
被动技能:动态平衡数据,增加虚拟节点,做不到绝对平均,只能是相对的

2.单调性

指在新增或者删除节点时,不影响系统正常运行,可以实现动态的数据迁移

3.分散性

数据应该分散的存在分布式集群中的各个节点,不必每个节点都存储所有的数据,“鸡蛋不要放在一个篮子里”。

四.springboot整合redis分片

(一)编辑分片配置文件

(二)编辑实现类

(三)修改redisaop中注入的数据

(四)关于redis分片总结

1.当redis节点宕机之后,用户访问必然受到影响

2.当redis节点宕机之后,该节点中的数据可能丢失

3.redis中分片可以实现内存数据的扩容

4.redis分片几种的hash运算发生在业务服务器中,redis只负责存取,不负责计算,所以效率更高。