Spring Boot不同版本Redis设置JedisConnectionFactory详解

 更新时间:2023年09月25日 10:39:03   作者:manongjc  
本文章向大家介绍Spring Boot不同版本Redis设置JedisConnectionFactory,主要内容包括1.X 版本、2.X 版本、2.、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容

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的资料请关注脚本之家其它相关文章!

相关文章

  • 详解Java ReentrantLock可重入,可打断,锁超时的实现原理

    详解Java ReentrantLock可重入,可打断,锁超时的实现原理

    前面讲解了ReentrantLock加锁和解锁的原理实现,但是没有阐述它的可重入、可打断以及超时获取锁失败的原理,本文就重点讲解这三种情况,需要的可以了解一下
    2022-10-10
  • idea.vmoptions 最佳配置方案

    idea.vmoptions 最佳配置方案

    本文介绍了针对IntelliJ IDEA的优化配置建议,包括提升内存设置、启用G1垃圾回收器、优化垃圾回收策略以及调整网络设置等,旨在提高IDE的性能和响应速度,同时,指导用户如何修改vmoptions文件以应用这些配置,并提供了监控内存使用和插件管理的建议
    2024-09-09
  • 一文带你弄懂Maven拉包(拉取依赖包)原理

    一文带你弄懂Maven拉包(拉取依赖包)原理

    业务需求开发的时候,我们总是会遇到拉不到依赖包的情况,此时如果不清楚 Maven 拉取依赖包的原理,那么很可能找不到问题所在,今天小编就带大家了解下 Maven 拉包的原理,让你在遇到问题的时候能快速解决,需要的朋友可以参考下
    2023-07-07
  • Java ThreadPool的使用解析

    Java ThreadPool的使用解析

    这篇文章主要介绍了Java ThreadPool的使用解析,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2020-10-10
  • JavaEE实现文件下载

    JavaEE实现文件下载

    这篇文章主要介绍了JavaEE实现文件下载的方法,非常的实用,需要的朋友可以参考下
    2014-10-10
  • Spring框架生成图片验证码实例

    Spring框架生成图片验证码实例

    验证码在很多地方都会遇到,实现的方法和形式也有很多,主要的目的就是为了安全,防止一些恶意的攻击等。今天在之前搭建好的一个spring框架上写了一个验证码的生成demo,我会贴出细节代码,但是spring的配置就不在介绍了,有需要的可以参考借鉴。
    2016-08-08
  • 使用Vert.x Maven插件快速创建项目的方法

    使用Vert.x Maven插件快速创建项目的方法

    这篇文章主要介绍了使用Vert.x Maven插件快速创建项目的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • Java Swagger使用教程

    Java Swagger使用教程

    Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化 Restful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法、参数和模型紧密集成到服务器端的代码,允许API来始终保持同步
    2022-07-07
  • 浅谈Java中格式化输出

    浅谈Java中格式化输出

    这篇文章主要介绍了Java中格式化输出,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 在JAVA Web项目中动态加载DLL/SO文件的方法

    在JAVA Web项目中动态加载DLL/SO文件的方法

    在JAVA Web项目中,我们经常需要调用一些第三方库或者实现一些JAVA本身不支持的功能,这时,我们可能会考虑使用JNI来调用DLL或SO文件,然而,因此,本文将介绍如何在JAVA Web项目中动态加载DLL/SO文件,需要的朋友可以参考下
    2024-12-12

最新评论