Spring Boot不同版本Redis設置JedisConnectionFactory詳解
Spring Boot不同版本Redis設置JedisConnectionFactory的方式
最近重構項目想引入Redis,之前1.0版本看項目里用的本地緩存Guava,這次重構后考慮要不要加入Redis。打算試試~
因為我以前做的項目用的Spring Boot版本比較低。還是老的 1.5.X版本的。 之前設置 JedisConnectionFactory 的方式與現(xiàn)在 2.X 版本有點不一樣,所以記錄一下,方便以后查看。
1.X 版本
設置 JedisConnectionFactory 方法:
@Bean
public JedisConnectionFactory jedisConnectionFactory(JedisPoolConfig jedisPoolConfig){
String[] hostAndPorts = env.getProperty("spring.redis.cluster.nodes").split(",");
JedisConnectionFactory jedisConnectionFactory = null;
if(hostAndPorts.length==1){
//單機版
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 版本使用的話會提示方法已過期,推薦使用下面的方法。
2.X 版本
2.X 版本可以使用 RedisStandaloneConfiguration 來配置連接信息。
@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)建新的連接。當并發(fā)量劇增時,這會帶來性能上開銷,同時由于沒有對連接數(shù)進行限制,則可能使服務器崩潰導致無法響應。
所以一般情況下都會建立連接池,事先初始化一組連接,供需要 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設置JedisConnectionFactory詳解的詳細內(nèi)容,更多關于Spring Boot Redis設置JedisConnectionFactory的資料請關注腳本之家其它相關文章!
相關文章
IDEA中錯誤:java: java.lang.NoSuchFieldError的問題解決
本文主要介紹了IDEA中錯誤:java: java.lang.NoSuchFieldError的問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-04-04
java集合中HashSet LinkedHashSet TreeSet三者異同面試精講
這篇文章主要為大家介紹了java集合中HashSet LinkedHashSet TreeSet三者異同面試精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10
SSH框架網(wǎng)上商城項目第2戰(zhàn)之基本增刪查改、Service和Action的抽取
SSH框架網(wǎng)上商城項目第2戰(zhàn)之基本增刪查改、Service和Action的抽取,感興趣的小伙伴們可以參考一下2016-05-05

