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;@Beanpublic 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 {@ResourceLettuceConnectionFactory factory;/*** 配置redis数据库,默认为db0* @return*/@Beanpublic StringRedisTemplate getStringRedisTemplate() {// 设置使用的redis数据库factory.setDatabase(1);// 重新初始化工厂factory.afterPropertiesSet();return new StringRedisTemplate(factory);}​

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

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

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

springboot+redis 切换redis库操作简洁明了相关推荐

  1. SpringBoot如何切换Redis默认库

    一些闲扯的话 我们清楚,Redis 尽管提供了 16 个索引库,但是每个数据库之间是隔离互不共享的,客户端默认连接使用的是 0 号数据库 . 注意:上方情况是基于单机 Redis 的,在集群模式下是没 ...

  2. Java连接redis选择指定库操作

    redis建立好通常会有15个库,从db0-db15,但是Java操作redis的时候,需要通过jedis连接,默认连接的是db0号库,如果需要往其他号库进行操作,执行以下操作就可以啦. 以maven ...

  3. php redis dao,phpredis单库操作string(5.0)

    try { $redis = new \redis(); $redis->connect('127.0.0.1', 6379, 3); $redis->auth("123456& ...

  4. golang常用库之-操作redis go-redis/redis库、 go-redsync/redsync库(redis分布式锁)

    文章目录 golang常用库之-操作redis go-redis/redis库. go-redsync/redsync库(redis分布式锁) 一.什么是go-redis/redis库 go-redi ...

  5. nodejs中使用ioredis库操作redis

    1.初始化 const Redis = require('ioredis');// 创建 Redis 客户端实例,设置默认过期时间 const redis = new Redis({host: '12 ...

  6. SpringBoot整合redis实现简单的操作demo

    SpringBoot中整合Redis 将用户频繁访问的内容存放在离用户最近,访问速度最快的地方,提高用户的响应速度,今天先来讲下在springboot中整合redis的详细步骤. 1.安装步骤 安装步 ...

  7. springboot+redis切换指定数据库or动态切换数据库

    redis切换数据库 项目使用指定的数据库 项目中动态切换数据库 项目使用指定的数据库 需求1: 甲方有很多系统用redis,我们这个系统需要指定用到4数据库 在配置文件中设置数据库 spring:r ...

  8. SpringBoot:整合Redis(概述,数据类型,持久化,RedisTemplate)

    1,Redis概述 1.1,Redis基本概念 在传统的Java Web项目中,使用数据库进行存储数据,但是有一些致命的弊端,这些弊端主要来自于性能方面.比如一些商品抢购的场景,或者是主页访问量瞬间较 ...

  9. Redis知识点总结(操作入门级)

    Redis笔记目录 nosql 讲解 nosql 数据模型 Nosql 四大分类 CAP BASE Redis 入门 Redis安装(Window & Linux服务器) 五大基本数据类型 S ...

最新文章

  1. 19.Remove Nth Node From End of List
  2. centos 编译 mysql_Centos编译mysql
  3. 硬核推荐:博主神器OpenWrite,免费的一文多发平台,无需部署,注册即用,安全可靠!...
  4. concurrent.futures dataset
  5. linux内核态串口读写程序,linux 0.11 内核学习 -- rs_io.s,串口汇编代码
  6. mysql日志是什么格式_Mysql日志的三种格式
  7. 字节跳动 EB 级 HDFS 实践
  8. Faster RCNN 训练自己的检测模型
  9. mysql高级之子查询,多表查询,外连接,集合操作,内部函数与数据控制_月隐学python第24课
  10. 支付宝php 验签 解密,支付宝敏感信息解密 - osc_fcq4wwqo的个人空间 - OSCHINA - 中文开源技术交流社区...
  11. linux vi使用手册,史上最全VIM使用手册
  12. udp数据包大小问题
  13. delphi android 2017,Delphi春天将来临,Android遇到XE7我也是醉了,Hello World
  14. HTML合并表格(单元格)
  15. 基于 Transfer Learning from Speaker Verification to Multispeaker Text-To-Speech Synthesis 的语音克隆复现论文阅读
  16. 相同的js文件在IE浏览器可以响应,但是在Chrome浏览器上没有响应
  17. MacOS修改Hosts文件
  18. Kindle商店请求出错怎么办?附解决办法
  19. WIN10教育版激活方法
  20. 获取地址段的所有地址(二)

热门文章

  1. iOS 暗黑模式适配(项目实战篇)
  2. 暗黑3新职业 巫师详细介绍全面曝光
  3. 安卓手机通讯录导入至iPhone中简单教程
  4. C/C++代理商管理系统
  5. java 过滤微信昵称_JAVA微信开发-如何保存包含特殊字符的微信昵称
  6. 日化美妆如何在高德地图上投放广告?高德地图投放广告的效果
  7. 中国助农网红直播大赛深圳赛区·海选启航仪式圆满举行
  8. mysql安装教程(本人亲自测过能用)
  9. 【题解】P1396 营救-C++
  10. Centos7系统NS-3的安装与环境配置