Spring Boot不同版本Redis設(shè)置JedisConnectionFactory詳解
Spring Boot不同版本Redis設(shè)置JedisConnectionFactory的方式
最近重構(gòu)項(xiàng)目想引入Redis,之前1.0版本看項(xiàng)目里用的本地緩存Guava,這次重構(gòu)后考慮要不要加入Redis。打算試試~
因?yàn)槲乙郧白龅捻?xiàng)目用的Spring Boot版本比較低。還是老的 1.5.X版本的。 之前設(shè)置 JedisConnectionFactory 的方式與現(xiàn)在 2.X 版本有點(diǎn)不一樣,所以記錄一下,方便以后查看。
1.X 版本
設(shè)置 JedisConnectionFactory 方法:
@Bean public JedisConnectionFactory jedisConnectionFactory(JedisPoolConfig jedisPoolConfig){ String[] hostAndPorts = env.getProperty("spring.redis.cluster.nodes").split(","); JedisConnectionFactory jedisConnectionFactory = null; if(hostAndPorts.length==1){ //單機(jī)版 String host = hostAndPorts[0].split(":")[0]; int port = Integer.valueOf(hostAndPorts[0].split(":")[1]); String password = env.getProperty("spring.redis.password"); jedisConnectionFactory = new JedisConnectionFactory(); jedisConnectionFactory.setPoolConfig(jedisPoolConfig); jedisConnectionFactory.setDatabase(1); jedisConnectionFactory.setHostName(host); jedisConnectionFactory.setPassword(password); jedisConnectionFactory.setPort(port); jedisConnectionFactory.setTimeout(5000); jedisConnectionFactory.afterPropertiesSet(); }else{ //集群版 RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration(); String password = env.getProperty("spring.redis.password"); Set<RedisNode> nodes = new HashSet<RedisNode>(); for (String ipPort:hostAndPorts){ String[] ipAndPort = ipPort.split(":"); nodes.add(new RedisNode(ipAndPort[0].trim(),Integer.valueOf(ipAndPort[1]))); } redisClusterConfiguration.setClusterNodes(nodes); redisClusterConfiguration.setMaxRedirects(200); jedisConnectionFactory = new JedisConnectionFactory(redisClusterConfiguration,jedisPoolConfig); jedisConnectionFactory.setPassword(password); jedisConnectionFactory.afterPropertiesSet(); } return jedisConnectionFactory; }
在 2.X 版本使用的話會(huì)提示方法已過(guò)期,推薦使用下面的方法。
2.X 版本
2.X 版本可以使用 RedisStandaloneConfiguration 來(lái)配置連接信息。
@Bean public JedisConnectionFactory redisConnectionFactory() { RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration(); redisStandaloneConfiguration.setHostName(env.getProperty("spring.redis.host")); redisStandaloneConfiguration.setPort(Integer.parseInt(env.getProperty("spring.redis.port"))); redisStandaloneConfiguration.setPassword(env.getProperty("spring.redis.password")); redisStandaloneConfiguration.setDatabase(Integer.parseInt(env.getProperty("spring.redis.database"))); return new JedisConnectionFactory(redisStandaloneConfiguration); }
以上配置使用的是直接連接 Redis 的方式,即每次連接都創(chuàng)建新的連接。當(dāng)并發(fā)量劇增時(shí),這會(huì)帶來(lái)性能上開(kāi)銷,同時(shí)由于沒(méi)有對(duì)連接數(shù)進(jìn)行限制,則可能使服務(wù)器崩潰導(dǎo)致無(wú)法響應(yīng)。
所以一般情況下都會(huì)建立連接池,事先初始化一組連接,供需要 Redis 連接的線程取用。
@Bean public JedisConnectionFactory redisConnectionFactory() { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxTotal(200); jedisPoolConfig.setMaxIdle(150); jedisPoolConfig.setMinIdle(50); RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration(); redisStandaloneConfiguration.setHostName(env.getProperty("spring.redis.host")); redisStandaloneConfiguration.setPort(Integer.parseInt(env.getProperty("spring.redis.port"))); redisStandaloneConfiguration.setPassword(env.getProperty("spring.redis.password")); redisStandaloneConfiguration.setDatabase(Integer.parseInt(env.getProperty("spring.redis.database"))); JedisClientConfiguration.JedisClientConfigurationBuilder configurationBuilder = JedisClientConfiguration.builder(); JedisClientConfiguration jedisClientConfiguration = configurationBuilder.usePooling().poolConfig(jedisPoolConfig).build(); return new JedisConnectionFactory(redisStandaloneConfiguration, jedisClientConfiguration); }
以上就是Spring Boot不同版本Redis設(shè)置JedisConnectionFactory詳解的詳細(xì)內(nèi)容,更多關(guān)于Spring Boot Redis設(shè)置JedisConnectionFactory的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解Java?ReentrantLock可重入,可打斷,鎖超時(shí)的實(shí)現(xiàn)原理
前面講解了ReentrantLock加鎖和解鎖的原理實(shí)現(xiàn),但是沒(méi)有闡述它的可重入、可打斷以及超時(shí)獲取鎖失敗的原理,本文就重點(diǎn)講解這三種情況,需要的可以了解一下2022-10-10使用Vert.x Maven插件快速創(chuàng)建項(xiàng)目的方法
這篇文章主要介紹了使用Vert.x Maven插件快速創(chuàng)建項(xiàng)目的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09在JAVA?Web項(xiàng)目中動(dòng)態(tài)加載DLL/SO文件的方法
在JAVA?Web項(xiàng)目中,我們經(jīng)常需要調(diào)用一些第三方庫(kù)或者實(shí)現(xiàn)一些JAVA本身不支持的功能,這時(shí),我們可能會(huì)考慮使用JNI來(lái)調(diào)用DLL或SO文件,然而,因此,本文將介紹如何在JAVA?Web項(xiàng)目中動(dòng)態(tài)加載DLL/SO文件,需要的朋友可以參考下2024-12-12