Spring Boot不同版本Redis设置JedisConnectionFactory详解
Spring Boot不同版本Redis设置JedisConnectionFactory的方式
最近重构项目想引入Redis,之前1.0版本看项目里用的本地缓存Guava,这次重构后考虑要不要加入Redis。打算试试~
因为我以前做的项目用的Spring Boot版本比较低。还是老的 1.5.X版本的。 之前设置 JedisConnectionFactory 的方式与现在 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 的方式,即每次连接都创建新的连接。当并发量剧增时,这会带来性能上开销,同时由于没有对连接数进行限制,则可能使服务器崩溃导致无法响应。
所以一般情况下都会建立连接池,事先初始化一组连接,供需要 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详解的详细内容,更多关于Spring Boot Redis设置JedisConnectionFactory的资料请关注脚本之家其它相关文章!
相关文章
spring kafka框架中@KafkaListener 注解解读和使用案例
Kafka 目前主要作为一个分布式的发布订阅式的消息系统使用,也是目前最流行的消息队列系统之一,这篇文章主要介绍了kafka @KafkaListener 注解解读,需要的朋友可以参考下2023-02-02Springboot整合Netty实现RPC服务器的示例代码
这篇文章主要介绍了Springboot整合Netty实现RPC服务器的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-01-01Java8使用Stream流实现List列表查询、统计、排序以及分组
List的Stream流操作可以简化我们的代码,减少程序运行的压力,应对上面的问题,下面这篇文章主要给大家介绍了关于Java8使用Stream流实现List列表查询、统计、排序以及分组的相关资料,需要的朋友可以参考下2023-06-06Java多线程之线程通信生产者消费者模式及等待唤醒机制代码详解
这篇文章主要介绍了Java多线程之线程通信生产者消费者模式及等待唤醒机制代码详解,具有一定参考价值,需要的朋友可以了解下。2017-10-10Java foreach循环是否可以修改数据的值问题解决方法
最近在做项目的时候,需要修改一个数组里面各个元素的值,foreach循环迭代数组元素时,不能改变数组元素的值,这篇文章给大家介绍Java foreach循环是否可以修改数据的值的问题及解决方法,感兴趣的朋友一起看看吧2024-02-02
最新评论