Redisson初始化

我们现在先写一个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 jedisShardInfoList = new ArrayList(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呢,我们也会做一个扩展知识点

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部