博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redis分片
阅读量:3709 次
发布时间:2019-05-21

本文共 1977 字,大约阅读时间需要 6 分钟。

单台redis的缺点:

单台redis可能出现宕机现象

单台redis的内存受限

redis分片:

优点:

可以实现动态扩容 ; 

如果单台redis出现问题则数据影响较小--其他redis中数据不丢失

缺点:

如果一台redis宕机则其他redis节点不能使用

分片的搭建:

1、将原有redis关闭

redis-cli -p 6379 shutdown

2、复制多个redis配置文件

说明:在redis根目录下创建 shard文件夹

将redis.conf文件复制到shard文件夹下

3、修改redis端口

分别修改6380-6381的端口号

4、启动多台redis

程序中分片的使用:

哈希一致性算法:

redis采用哈希一致性算法

特点:

1、分散性

为什么数据会落入不同的节点??   

哈希一直算法中会根据key值算出唯一的一个物理地址,将数据保存在该地址中.

       将redis的节点信息根据IP+算法算出唯一的一个物理地址.

       Key值以顺时针方向寻找最近的redis节点进行挂载.

当获取数据时.首先根据key值计算出属于哪台redis节点,之后从该节点中get(key).

 

 

 

 

2、均衡性

当根据哈希运算的结果出现负载不均的现象时,会为当前负载较少的节点创建虚拟节点.作用是为了分担数据的压力.保证节点所管理的信息数量尽可能维持在1/N的水平.

3、单调性

单调性可以实现动态的数据扩容/动态数据挂载---redis节点增加或减少时

当redis中的节点出现宕机时,那么该节点中的数据全部从内存清空--重新挂载,那么剩余的节点会动态的进行哈希运算,剩余节点中的key值动态的实现数据挂载.

4、负载

spring整合分片:

spring/Redis_applicationContext-shard.xml

property/redis.properties

#最小空闲数redis.minIdle=100#最大空闲数redis.maxIdle=300#最大连接数redis.maxTotal=1000#客户端超时时间单位是毫秒 redis.timeout=5000#最大建立连接等待时间  redis.maxWait=1000#是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个redis.testOnBorrow=trueredis.host1=192.168.126.151redis.port1=6379redis.host2=192.168.126.151redis.port2=6380redis.host3=192.168.126.151redis.port3=6381

工具类

//实现分片的redis操作@Autowiredprivate ShardedJedisPool shardedJedisPool;public void set(String key,String value){   ShardedJedis jedis = shardedJedisPool.getResource();   jedis.set(key, value);   shardedJedisPool.returnResource(jedis);}public String get(String key){   ShardedJedis jedis = shardedJedisPool.getResource();   String json = jedis.get(key);   shardedJedisPool.returnResource(jedis);   System.out.println("分片的操作完成!!!!");   return json;}

转载地址:http://ujijn.baihongyu.com/

你可能感兴趣的文章
Python与有趣的数学1
查看>>
Python制作2048小游戏
查看>>
Python与有趣的数学2
查看>>
Python的Pygame模块制作贪吃蛇游戏
查看>>
Python实现康威生命游戏
查看>>
Python库Pandas的使用技巧(一)
查看>>
java基础复习(八):聊聊synchronized和Lock/AQS
查看>>
不要再问我cookie和session的区别,因为没法比
查看>>
设计:读写锁
查看>>
设计:优先队列、TOPK问题
查看>>
web安全实战第二天——攻击机制与防御机制
查看>>
鸿蒙OS强在哪里?
查看>>
SSM项目整合--纯代码篇
查看>>
hexo+git+node搭建博客/全网最全/一次成功搭建
查看>>
npm(Node Package Manager)安装、及 操作 教程
查看>>
SpringBoot框架完整‖怎么写一个基础项目
查看>>
为什么有spring框架?| spring 框架产生的背景
查看>>
spring框架的 IOC翻转控制 | 解决程序之间的依赖关系,降低耦合
查看>>
数据库设计报告——用教材管理系统来举例
查看>>
ubuntu 20.04安装提示无法安装文件
查看>>