Redisson初始化
生活随笔
收集整理的這篇文章主要介紹了
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<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初始化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redisson框架框架集成
- 下一篇: Redisson分布式锁实战-1:构建分