当前位置: 首页 > news >正文

(Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八

默认redis使用的是db 0,而我们自己在配置连接的时候可以设置默认使用db ,如:

spring:
  redis:
    lettuce:
      pool:
        #连接池最大连接数 使用负值代表无限制 默认为8
        max-active: 10
        #最大空闲连接 默认8
        max-idle: 10
        #最小空闲连接 默认0
        min-idle: 1
    host: 127.0.0.1
    password: 12345
    port: 6379
    database: 0
    timeout: 2000ms

那么怎么去实现动态 去切换自己想使用的db呢?

 

先回顾性我们在配置redis的时候,连接redis使用的代码段(举例StirngRedisTemplate):

那么切换也是同理,就是传入factory的时候,设置好选择的db:

新建RedisDBChangeUtil.java:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;

/**
 * @Author : JCccc
 * @CreateTime : 2020/4/21
 * @Description :
 **/
@Component
public class RedisDBChangeUtil {

    @Autowired
    private StringRedisTemplate redisTemplate;

    public void setDataBase(int num) {
        LettuceConnectionFactory connectionFactory = (LettuceConnectionFactory) redisTemplate.getConnectionFactory();
        if (connectionFactory != null && num != connectionFactory.getDatabase()) {
            connectionFactory.setDatabase(num);
            this.redisTemplate.setConnectionFactory(connectionFactory);
            connectionFactory.resetConnection();
        }
    }
}

 注意!!!
 注意!!!
 注意!!!
 注意!!!

LettuceConnectionFactory 是 在springboot  2.X版本使用,

但是

springboot 版本 spring-boot-starter-data-redis 的版本对这个redis切换db非常不友好!

亲测 ,使用 springboot 2.1.3.RELEASE   springboot 2.1.4.RELEASE springboot 2.1.5.RELEASE ,2.2.4.RELEASE可以成功切换。

但是从springboot 2.1.6.RELEASE 开始 到springboot 2.2.0.RELEASE 都是有问题的。

 

ok,最后简单的切换使用演示:

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @Autowired
    RedisDBChangeUtil redisDBChangeUtil;

    @ResponseBody
    @RequestMapping("/addRedis")
    public String addRedis() {


        redisDBChangeUtil.setDataBase(2);
        stringRedisTemplate.opsForValue().set("add to 2", "2020-06-02");
        redisDBChangeUtil.setDataBase(3);
        stringRedisTemplate.opsForValue().set("add to 3", "2020-06-02");
        redisDBChangeUtil.setDataBase(1);
        stringRedisTemplate.opsForValue().set("add to 1", "2020-06-02");
        return "添加成功";
    }

 

调用接口,可以看到redis里面的值已经分别插入了:

 

ok,该篇教程就暂且到此结束。

相关文章:

  • JAVA jdk1.8 HashMap 存值流程图解
  • Java String 为什么不可变? 真的吗?
  • JAVA 将日期字符串 月份不足10月进行补0操作
  • Springboot Quartz定时任务的动态调度使用,实战详解
  • Springboot 跟着我了解下 事务 @Transactional 默认方式 Propagation.REQUIRED
  • Springboot 全局日期格式化,只需要几行小代码
  • springboot 上传文件设置文件大小限制
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • Springboot 自定义注解+AOP简单实例介绍
  • Java 将Map的toString格式字符串转为 Map
  • Java 细品 重写equals方法 和 hashcode 方法
  • Java 对象的克隆Clone和必须了解的浅拷贝与深拷贝
  • Java i++ 与 ++i
  • Java try 与 finally 对于返回值的影响
  • 手撕一道算法题 在你面前有一个n阶的楼梯,你一步只能上1阶或2阶。请问,当N=11时,你可以采用多少种不同的方式爬完这个楼梯();当N=9时呢?
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • Apache的80端口被占用以及访问时报错403
  • canvas 五子棋游戏
  • es6
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • java第三方包学习之lombok
  • magento 货币换算
  • PHP 7 修改了什么呢 -- 2
  • redis学习笔记(三):列表、集合、有序集合
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 从setTimeout-setInterval看JS线程
  • 关于springcloud Gateway中的限流
  • 讲清楚之javascript作用域
  • 十年未变!安全,谁之责?(下)
  • 使用权重正则化较少模型过拟合
  • 微服务入门【系列视频课程】
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 移动端 h5开发相关内容总结(三)
  • 阿里云API、SDK和CLI应用实践方案
  • ​iOS安全加固方法及实现
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #QT项目实战(天气预报)
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (4)STL算法之比较
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (二)springcloud实战之config配置中心
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (六)激光线扫描-三维重建
  • (十六)Flask之蓝图
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • .Net 4.0并行库实用性演练
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .net 程序发生了一个不可捕获的异常