springboot连接redis并动态切换database

2023-10-27

springboot连接redis并动态切换database

众所周知,redis多有个db,在jedis中可以使用select方法去动态的选择redis的database,但在springboot提供的StringRedisTemplate中确,没有该方法,好在StringRedisTemplate预留了一个setConnectionFactory方法,本文主为通过修改ConnectionFactory从而达到动态切换database的效果。

springboot连接redis

pom.xml文件中引入spring-boot-starter-redis,版本可自行选择

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-redis</artifactId>
    <version>1.3.8.RELEASE</version>
</dependency>

application.properties

#redis配置
spring.redis.database=0
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=pwd
spring.redis.timeout=0
spring.redis.pool.max-active=8
spring.redis.pool.max-idle=8
spring.redis.pool.max-wait=-1
spring.redis.pool.min-idle=0

TestCRedis.java

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = Application.class)
public class TestCRedis{

    protected static Logger LOGGER = LoggerFactory.getLogger(TestCRedis.class);

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @Test
    public void t1(){
        ValueOperations<String, String> stringStringValueOperations = stringRedisTemplate.opsForValue();
        stringStringValueOperations.set("testkey","testvalue");
        String testkey = stringStringValueOperations.get("testkey");
        LOGGER.info(testkey);
    }

}

运行TestCRedis.t1(),控制台打印“testvalue”redis连接成功

redis动态切换database

首先使用redis-cli,在redis的0、1、2三个库中,分别设置test 的值,分别为;0、1、2

TestCRedis.java

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = Application.class)
public class TestCRedis{

    protected static Logger LOGGER = LoggerFactory.getLogger(TestCRedis.class);

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @Test
    public void t1(){
        ValueOperations<String, String> stringStringValueOperations = stringRedisTemplate.opsForValue();
        stringStringValueOperations.set("testkey","testvalue");
        String testkey = stringStringValueOperations.get("testkey");
        LOGGER.info(testkey);
    }

    @Test
    public void t2() {
        for (int i = 0; i <= 2; i++) {
            JedisConnectionFactory jedisConnectionFactory = (JedisConnectionFactory) stringRedisTemplate.getConnectionFactory();
            jedisConnectionFactory.setDatabase(i);
            stringRedisTemplate.setConnectionFactory(jedisConnectionFactory);
            ValueOperations valueOperations = stringRedisTemplate.opsForValue();
            String test = (String) valueOperations.get("test");
            LOGGER.info(test);
        }
    }

}

运行TestCRedis.t2(),控制台分别打印 “0、1、2”,database切换成功

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springboot连接redis并动态切换database 的相关文章

随机推荐

  • C++ 引用作为函数返回值

    1 以引用返回函数值 定义函数时需要在函数名前加 2 用引用返回一个函数值的最大好处是 在内存中不产生被返回值的副本 引用作为返回值 必须遵守以下规则 1 不能返回局部变量的引用 主要原因是局部变量会在函数返回后被销毁 因此被返回的引用就成
  • unity音效添加

    音频资源AudioClip 播放的音频通过摄像头上的Audio Listener监听 Audio Listener有且只有一个 否则会报警告 创建一个空对象 重命名为Music Player 音频源 为其添加上Audio Souce组件 将
  • Mysql - 直接查询存储的Json字符串中的数据

    我们平时使用mysql 出于项目需求 可能需要直接将Java对象或者一个大json 直接存到表中的某个字段中 使用的时候再查出来 反序列化到对象或者一个Map中 方便我们操作 大多时候 我们可能并不需要所有的数据 只想使用这个对象或者jso
  • 详解synchronized与Lock的区别与使用

    引言 昨天在学习别人分享的面试经验时 看到Lock的使用 想起自己在上次面试也遇到了synchronized与Lock的区别与使用 于是 我整理了两者的区别和使用情况 同时 对synchronized的使用过程一些常见问题的总结 最后是参照
  • 关于easyExcel实体字段对应日期类型格式化问题

    可以写一个实体转换器来实现easyExcl中的Converter接口 可参考easyExcel官方文档中的 Alibaba Easy Excel 简单 省内存的Java解析Excel工具 读Excel
  • MATLAB实现传递函数

    1 简单的传递函数模型 num 1 10 den 1 5 4 3 2 G tf num den 2 零极点模型 KGain K 系统增益K Z 1 2 3 零点 P 4 5 6 极点 G zpk Z P KGain 3 反馈系统 G1 tf
  • 阿里马涛:重新定义云时代的开源操作系统

    作者 Just 出品 CSDN ID CSDNnews 随着云计算的发展 以及Linux平台的不断发展和生态系统的不断完善 越来越多的企业 云服务提供商都将Linux作为其数据中心的首选操作系统 不过 作为云基础设施的底座 针对云上产品和环
  • HyperLedger Fabric链码开发及测试

    https blog csdn net TripleS X article details 80550401 https blog csdn net weixin 44676392 article details 87938451 http
  • C# 实现多种语言切换,通过VS实现

    步骤 1 在要更换语言的界面 如Form1界面 选择属性 Language 选择要使用的语言 如下图 2 添加完语言之后VS会自动生成对应语言的 resx文件 通过该文件可以编辑语言 由于VS已经给我们添加了该界面的所有字段和变量 所以我们
  • 海思his35xx安防芯片音视频媒控驱动基础篇MIPI RX模块(一)

    先给自己打个广告 本人的微信公众号正式上线了 搜索 张笑生的地盘 主要关注嵌入式软件开发 股票基金定投 足球等等 希望大家多多关注 有问题可以直接留言给我 一定尽心尽力回答大家的问题 二维码如下 一 背景介绍 海思芯片的应用方向大致分为如下
  • python安装库出现retrying-Python之retrying

    retrying是一个很好用的关于重试的Python包 可以用来自动重试一些可能会运行失败的程序段 为什么选择retrying 我们在写一些程序的时候 会去调用一些外部资源 组件 这些外部程序对我们来说是不可控的 所以它们不可用 运行失败都
  • SqlServer数据库删除数据

    数据库删除数据的三种代码方式 1 删除表结构及所有数据 drop table table name 2 恢复表格出厂设置 id清空 truncate table table name 3 删除表数据 delete from table na
  • 期货怎么满仓(期货为什么不能满仓操作)

    期货满仓怎么bao cang q 您是想问期货满仓爆仓怎么处理吗 满仓交易的风险就是会强制平仓 也就是所谓的爆仓 爆仓是指 1 投资者帐户权益为负数 表明投资者不仅输光了全部保证金而且还倒欠期货经纪公司债务 2 发生爆仓时 投资者必须及时将
  • 红帽认证主要考哪些内容呢

    红帽认证考试主要考以下内容 RH124 红帽系统管理I 主要涉及访问命令行 从命令行访问文件 获取RHCEL7帮助信息 创建及查看编辑文件 管理用户和用户组 管理文件和目录权限 监视和管理Linux进程 控制服务和后台进程 管理OpenSS
  • Android自定义自动换行LinearLayout探索与实现

    Android自定义自动换行LinearLayout探索与实现 在Android开发中 我们经常需求实现一些特定的布局效果以满足用户的需求 其中之一就是自动换行布局 即当容器内的子视图数量超过一行时 自动将多余的子视图放到下一行进行显示 本
  • go语言试用标准c 库,Go语言开发(十三)、Go语言常用标准库三

    Go语言开发 十三 Go语言常用标准库三 一 sync 1 sync简介 sync提供基本的同步原语 如sync Mutex sync RWMutex sync Once sync Cond sync Waitgroup 除了Once和Wa
  • Vue Collapse 中嵌套 Collapse 折叠板在tab切换后打不开了

    name也要改成indx 监听tab改变 清空vModel 在给vModel赋值 这样就解决了
  • Hive元数据上亿级别存储方案的实践

    问题导读1 什么是元数据 Federation 方案 2 怎样引入 Federation 方案 3 怎样改造现有服务 背景Apache Hive 是基于 Apache Hadoop 之上构建的数据仓库 提供了简单易用的类 SQL 查询语言
  • 备份Vss工程&建立Vss目录安全体系

    一 使用备份文件 ssa进行恢复时 1 若原来作的是archive all the date的备份 并且没有将原project删除 则 永久删除 原来的project再作恢复 2 若原来作的 archive this version and
  • springboot连接redis并动态切换database

    springboot连接redis并动态切换database 众所周知 redis多有个db 在jedis中可以使用select方法去动态的选择redis的database 但在springboot提供的StringRedisTemplat