springboot+redis 切换redis库操作简洁明了

springboot整合redis后默认使用的是redist的db0号库,在学习redis时对redis库进行了很多数据操作,今天使用redis开始正式写项目的时候我想换一个库,但是不知道操作上网一搜发现配置多的要死,研究了一下发现只需要几行代码就可以实现

  1. 别人的完整版
    ​
    package com.qianhe.utlis.RedisDB;
    
    import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Primary;
    import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
    import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
    import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration;
    import org.springframework.data.redis.core.StringRedisTemplate;
    
    import java.time.Duration;
    
    @Configuration
    public class RedisConfig {
    
        @Value("${redis.database.db0}")
        private int db0;
    
        @Value("${redis.database.db1}")
        private int db1;
    
        @Value("${redis.database.db2}")
        private int db2;
    
        @Value("${redis.host}")
        private String host;
    
        @Value("${redis.port}")
        private int port;
    
    //    @Value("${redis.password}")
    //    private String password;
    
        @Value("${redis.timeout}")
        private int timeout;
    
        @Value("${redis.pool.max-active}")
        private int maxActive;
    
        @Value("${redis.pool.max-idle}")
        private int maxIdle;
    
        @Value("${redis.pool.min-idle}")
        private int minIdle;
    
        @Value("${redis.pool.max-wait}")
        private int maxWait;
    
        @Bean
        public GenericObjectPoolConfig getPoolConfig(){
            // 配置redis连接池
            GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
            poolConfig.setMaxTotal(maxActive);
            poolConfig.setMaxIdle(maxIdle);
            poolConfig.setMinIdle(minIdle);
            poolConfig.setMaxWaitMillis(maxWait);
            return poolConfig;
        }
    
        @Primary
        @Bean(name = "redisTemplate0")
        public StringRedisTemplate getRedisTemplate0(){
            return getStringRedisTemplate(db0);
        }
    
        @Bean(name = "redisTemplate1")
        public StringRedisTemplate getRedisTemplate1(){
            return getStringRedisTemplate(db1);
        }
    
        @Bean(name = "redisTemplate2")
        public StringRedisTemplate getRedisTemplate2(){
            // 构建工厂对象
            return getStringRedisTemplate(db2);
        }
    
        private StringRedisTemplate getStringRedisTemplate(int database) {
            // 构建工厂对象
            RedisStandaloneConfiguration config = new RedisStandaloneConfiguration();
            config.setHostName(host);
            config.setPort(port);
            //config.setPassword(RedisPassword.of(password));
            LettucePoolingClientConfiguration clientConfig = LettucePoolingClientConfiguration.builder()
                    .commandTimeout(Duration.ofSeconds(timeout))
                    .poolConfig(getPoolConfig())
                    .build();
            LettuceConnectionFactory factory = new LettuceConnectionFactory(config, clientConfig);
            // 设置使用的redis数据库
            factory.setDatabase(database);
            // 重新初始化工厂
            factory.afterPropertiesSet();
            return new StringRedisTemplate(factory);
        }
    
    }
    ————————————————
    版权声明:本文为CSDN博主「白小白的小白」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_42874635/article/details/118157740
    
    ​

    研究了一下发现大部分都是没必要的,因为springboot整合redis后会通过yml自动配置,我们只需要配置一下具体数据库就行了

  2. 精简版代码

​
package com.hmdp.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;

import javax.annotation.Resource;


/**
 * @Author: Thorns
 * @Data:2023/5/1617:19
 * @PackageName:top.thorns.redislearn.springdataredis
 * @ClassName: RedisTemplateConfig
 * @Description:
 **/
@Configuration
public class RedisConfig {

    @Resource
    LettuceConnectionFactory factory;


    /**
     * 配置redis数据库,默认为db0
     * @return
     */
    @Bean
    public StringRedisTemplate getStringRedisTemplate() {
        // 设置使用的redis数据库
        factory.setDatabase(1);
        // 重新初始化工厂
        factory.afterPropertiesSet();
        return new StringRedisTemplate(factory);
    }

​

只需要依赖一下Lettuce连接工厂,然后设置工厂数据源就好了,至于说Lettuce连接工厂的上层依赖配置,springboot会通过读取配置文件为我们自动配置。

我这里是偷懒写死了连接1号库,有需求的可以对上述代码进行一下封装动态传值切换redis库。

菜鸡一个可能写的有些地方不正确欢迎大佬指正,但是代码经过实验确实可以实现切换redis库

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
SpringbootRedis是常见的企业级开发系统中使用的技术。Springboot是一个用于快速开发基于Java的应用程序的框架,它简化了配置和部署的过程,提供了很多开箱即用的功能和扩展性。而Redis则是一种高性能的键值存储数据库,它支持各种数据结构和功能,如缓存、消息队列和分布式锁等。 在使用SpringbootRedis开发企业级系统时,可以利用Redis作为缓存来提高系统的性能和响应速度。通过将频繁访问的数据存储在Redis中,可以减少对数据库的访问次数,从而减轻数据库的负载。同时,Redis还提供了一些特有的功能,如发布/订阅机制和事务支持,可以帮助实现系统中的一些复杂业务逻辑。 在项目中集成SpringbootRedis可以通过引入相关的依赖和配置文件来实现。在pom.xml文件中添加相关的依赖,如spring-boot-starter-data-redis和jedis等,然后在application.properties或application.yml文件中配置Redis的连接信息和其他相关配置。 在Springboot中使用Redis可以通过注入RedisTemplate或StringRedisTemplate来进行操作RedisTemplate提供了更丰富的操作接口,可以直接对各种类型的数据进行读写操作。而StringRedisTemplate则更加简化,主要用于对字符串类型的数据进行操作。 总而言之,SpringbootRedis的结合可以为企业级开发系统带来很多好处,包括提高系统性能、简化开发过程和实现一些复杂的业务逻辑。通过合理使用这两个技术,可以构建出高效、稳定和可扩展的企业级应用系统。<span class="em">1</span> #### 引用[.reference_title] - *1* [Java企业报表管理系统源码](https://download.csdn.net/download/m0_55416028/88269629)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值