我们现在先写一个Redisson的初始化类,这个类写在common里面,这个类名叫RedissonManager,首先这个Manager肯定是要添加到我们的Spring容器当中,增加@Component注解,我们使用代码的方式来集成Redissonprivate Config config = new Config();那这个Config导入包的时候千万不要导错,我们导入的一定是redisson的config,然后要声明一个初始化的一个Redisson,private Redisson redisson = null;现在我们就要那Redisson server的ip和端口,我们来到RedisShardedPool里边,把这两个配置拿过来,private final static String redis1Ip = PropertiesUtil.getProperty("redis1.ip");private final static Integer redis1Port = Integer.parseInt(PropertiesUtil.getProperty("redis1.port"));这样redis1和redis2都拿过来了,既然说到RedisShardedPool,ip可以用逗号进行分割,端口也可以用逗号进行分割,并且他们是匹配的,而我们在下面new JedisShardInfo的时候,然后通过一个遍历放到一个集合当中,而这个size也可以不指定private static String redis1Ip = PropertiesUtil.getProperty("redis1.ip");private static Integer redis1Port = Integer.parseInt(PropertiesUtil.getProperty("redis1.port"));private static String redis2Ip = PropertiesUtil.getProperty("redis2.ip");private static Integer redis2Port = Integer.parseInt(PropertiesUtil.getProperty("redis2.port"));private static void initPool(){JedisPoolConfig config = new JedisPoolConfig();config.setMaxTotal(maxTotal);config.setMaxIdle(maxIdle);config.setMinIdle(minIdle);config.setTestOnBorrow(testOnBorrow);config.setTestOnReturn(testOnReturn);config.setBlockWhenExhausted(true);//连接耗尽的时候,是否阻塞,false会抛出异常,true阻塞直到超时。默认为true。JedisShardInfo info1 = new JedisShardInfo(redis1Ip,redis1Port,1000*2);JedisShardInfo info2 = new JedisShardInfo(redis2Ip,redis2Port,1000*2);List<JedisShardInfo> jedisShardInfoList = new ArrayList<JedisShardInfo>(2);jedisShardInfoList.add(info1);jedisShardInfoList.add(info2);pool = new ShardedJedisPool(config,jedisShardInfoList, Hashing.MURMUR_HASH,Sharded.DEFAULT_KEY_TAG_PATTERN);}这样分片的reids就可以做一个动态的加载了,也就是我们在修改完配置之后,重启tomcat就OK了,那接着回到redisson里边,现在我们声明一个初始化方法@PostConstruct
private void init() {try {//在redis环境没有搭建起来之前,这里先注释上,否则项目启动不起来。127.0.0.1:6379
//            config.useSingleServer().setAddress(new StringBuilder()
.append(redis1Ip).append(":").append(redis1Port).toString());//单主模式
//            config.useMasterSlaveServers().setMasterAddress(new StringBuilder()
.append(redis1Ip).append(":").append(redis1Port).toString());//主从模式
//            config.useMasterSlaveServers().setMasterAddress("10.211.55.6:6379")
.addSlaveAddress("10.211.55.6:6380");//            redisson = (Redisson) Redisson.create(config);log.info("初始化Redisson结束");} catch (Exception e) {log.error("redisson init error", e);}
}我们可以通过静态块调用init方法,或者我们在这里面换一个方式,使用@PostConstruct这么一个注解,我们RedissonManager在构造器完成之后,执行init方法,那现在我们有两个redis节点,redisson还是不支持一致性算法的,但是没有关系,因为我们前面也看了Spring Session源码,里面也不支持,那我们在实际上线的时候呢,可以把Spring Session和Redisson,单独使用一个redis,或者让他们单独使用一个database
redisson配置非常简单,config.useSingleServer,然后它是一个链式调用,要看源码,有的源码的注释还是写的非常好的,/*** Set server address. Use follow format -- host:port** @param address of Redis* @return config*/public SingleServerConfig setAddress(String address) {if (address != null) {this.address = URLBuilder.create(address);}return this;}public URL getAddress() {if (address != null) {return address;}return null;}void setAddress(URL address) {if (address != null) {this.address = address;}}返回值就是config,我们这里要改成ip:port的一个方式config.useSingleServer().setAddress(new StringBuilder().append(redis1Ip)
.append(":").append(redis1Port).toString());redisson = (Redisson) Redisson.create(config);我们要把RedissonManager注入到其他类使用,但是我们使用的是Redisson这个对象,redisson是私有的,所以我们要开放他我们添加一个get方法,只开放reidsson就OK了,这个方法是public的,现在我们只用了一个SinlgeServer Redis1,前面讲Redisson的时候也有说,对于主从Reids呢,我们也会做一个扩展知识点

Redisson初始化相关推荐

  1. redisson用阿里云集群版redis的问题_redission 序列化问题追踪

    背景 项目原本是用jedis连接redis,但考虑到需要用redis锁,因此替换为方便快捷的redisson,但是使用redisson之后会报decode error,具体信息如下: 2019-05- ...

  2. Redisson中的看门狗

    Redisson中的看门狗 1 使用看门狗的背景 1.1 普通的Redis分布式锁的缺陷 1.2 用看门狗解决自动续期的问题 2 看门狗自动续期机制的理解 3 redisson 看门狗使用以及原理 3 ...

  3. Redis分布式锁 Spring Schedule实现任务调度

    一看到标题就知道,这一篇博客又是总结分布式工作环境中集群产生的问题,个人觉得分布式没有那么难以理解,可能也是自己见识比较浅,对我来说,分布式只是一种后端业务演进时的一种工作方式,而真正实现这种工作方式 ...

  4. Redis进阶 - 因异常断电导致的Redis Cluster Fail故障处理

    文章目录 Pre 现象 查找未指派的slots 方式一 cluster slots 方式二 cluster nodes 计算未指派的slots ,重新添加 Redisson 初始化失败 (Not al ...

  5. 怎么解决高并发下抢红包和商品超卖问题?

    一.场景模拟 在抢红包或秒杀商品的时候,肯定会有高并发的情况出现,程序中如果出现库存重复减扣的情况,那肯定是不行的!接下来模拟一下高并发下的库存重复减扣问题以及相应的解决方案. 1.  在测试前,需要 ...

  6. java分布式锁解决方案 redisson or ZooKeeper

    redis 分布式锁 Redisson 是 redis 官方推荐的Java分布式锁第三方框架. 高效分布式锁 当我们在设计分布式锁的时候,我们应该考虑分布式锁至少要满足的一些条件,同时考虑如何高效的设 ...

  7. 聊聊分布式锁——Redis和Redisson的方式

    聊聊分布式锁--Redis和Redisson的方式 一.什么是分布式锁 分布式~~锁,要这么念,首先得是『分布式』,然后才是『锁』 分布式:这里的分布式指的是分布式系统,涉及到好多技术和理论,包括CA ...

  8. Redisson官方文档 - 目录

    Redisson项目介绍 1. 概述 2. 配置方法 2.1. 程序化配置 2.2. 文件方式配置 2.2.1 通过JSON或YAML格式配置 2.2.2 通过Spring XML命名空间配置 2.3 ...

  9. 分布式锁(Redisson)-从零开始,深入理解与不断优化

    分布式锁场景 互联网秒杀 抢优惠卷 接口幂等性校验 案例1 如下代码模拟了下单减库存的场景,我们分析下在高并发场景下会存在什么问题 package com.wangcp.redisson;import ...

最新文章

  1. 【必看】如何在 Linux 上恢复误删除的文件或目录
  2. pci-e串口卡linux 驱动下载,万能PCI串口卡驱动下载
  3. mq3.8.9版本有什么不同_Python3.9版本新特性:字典合并操作的详细解读
  4. 用稳压管保护单片机引脚_零基础入门单片机(2)学会控制IO引脚你就入门啦
  5. 数据挖掘算法学习(四)PCA算法
  6. 线段树初见——区间询问与改变最大值
  7. 【转】Dynamics 365 Customer Engagement中插件的调试
  8. js前端解析excel文件
  9. Netty in action—Netty简介
  10. Python3入门机器学习经典算法与应用 第3章 Numpy中的比较和FancyIndexing
  11. 瑞友天翼服务器ip地址怎么修改,瑞友天翼6.0版本iphone移动客户端操作手册
  12. Java速成:Boot入门
  13. java access数据库连接_Java Access数据库连接
  14. 绝对值编码器 c语言,绝对式光电编码器
  15. 百度地图设置显示定位服务器,百度地图API示例之设置地图显示范围
  16. postgresql 日期相减
  17. 算法原理系列:红黑树
  18. 三长一短选最短,三短一长选最长
  19. 模拟赛Day1(20200203) T1 垃圾题【分类讨论+枚举+dp解决等价匹配问题】
  20. macOS Monterey(版本12.6.3)使用iTunes

热门文章

  1. 《LED调光-DMX512灯光协义接收控制》转
  2. Axure学习之线框图-文本
  3. 2012_Houdini_ShowReel.
  4. 【JFreeChart】JFreeChart—输出折线图
  5. How to mount HFS EFI on macOS
  6. ACM-ICPC 2018 徐州赛区网络预赛 D. Easy Math
  7. [MySql] - 解决部署的服务器没有安装MySql Connector
  8. This EntitySet of type xxx does not support the 'Edit' operation
  9. Windows 2008活动目录的安装和卸载
  10. 互联网话题: 陈冠希, 张柏芝, 台湾, ASP与雪灾