SpringBoot如何切换Redis默认库

一些闲扯的话

我们清楚,Redis 尽管提供了 16 个索引库,但是每个数据库之间是隔离互不共享的,客户端默认连接使用的是 0 号数据库 。

注意:上方情况是基于单机 Redis 的,在集群模式下是没有多数据库概念的,只有一个 db0,不支持多 db

所以,本文切换数据库是基于单机版 Redis 的。

为什么 Redis 要有这么多的数据库,以及为啥要切换?

个人理解 ,Redis 之所以分这么多个数据库,也是为了区分业务,不同的业务存放在不同的库,但是一个 Redis,一般是给一个项目用,项目内的不同业务,单独用一个库,这样不会相互有数据交叉。比如:用户信息放到 0 库,商品数据放在 1 库等等。

今天整理这篇文章是前段时间面试遇到了,然后整理了出来,只是个思路,未提供动态切换的工具类,好了废话不多说了,进入正题吧。

方式一:配置文件方式

springboot的配置文件中提供了指定使用数据库的属性字段。

1、application.properties
spring.redis.database=0spring.redis.host=127.0.0.1spring.redis.port=6379spring.redis.password=1234
2、application.yml
spring  redis:    host: 127.0.0.1    port: 6379    password: 1234    database: 0

方式二:JedisConnectionFactory

JedisConnectionFactory 提供了 setDatabase() 方法来供我们指定使用的数据库。

我们知道 Java 为我们提供了两种 Redis 实现类:RedisTemplateStringRedisTemplate

本文以 StringRedisTemplate 为例,进行 Redisdb 切换。

SpringBoot 1.X之前的版本
JedisConnectionFactory jedisConnectionFactory = (JedisConnectionFactory) stringRedisTemplate.getConnectionFactory(); jedisConnectionFactory.setDatabase(切换到指定的db上);stringRedisTemplate.setConnectionFactory(jedisConnectionFactory);
SpringBoot 2.X之后的版本
LettuceConnectionFactory jedisConnectionFactory = (LettuceConnectionFactory) redisTemplate.getConnectionFactory();jedisConnectionFactory.setDatabase(切换到指定的db上);redisTemplate.setConnectionFactory(jedisConnectionFactory);jedisConnectionFactory.resetConnection();
简单使用:
 @Autowiredprivate 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();        }}

面试:你们是如何切换Redis数据库的?

一种参考回答,JedisConnectionFactory 提供了 setDatabase() 方法,可以通过该方法改变 Redis 使用的库。

原文地址:https://www.cnblogs.com/niceyoo/p/12058436.html

时间: 2024-10-31 17:19:00

SpringBoot如何切换Redis默认库的相关文章

SpringBoot入门 (七) Redis访问操作

本文记录学习在SpringBoot中使用Redis. 一 什么是Redis Redis 是一个速度非常快的非关系数据库(Non-Relational Database),它可以存储键(Key)与 多种不同类型的值(Value)之间的映射(Mapping),可以将存储在内存的键值对数据持久化到硬盘,可以使用复制特性来扩展读性能,还可以使用客户端分片来扩展写性能.Redis主要有以下几个优点: 1 性能极高,它每秒可执行约 100,000 个 Set 以及约 100,000 个 Get 操作: 2 

关于【LNK4098 默认库与其他库的使用冲突】警告

用 VisualStudio 搞开发,经常会遇到这个问题,特别是在别人的解决方案下面建立自己的项目的时候,很多时候都会遇到这个连接器警告,网上搜到的方法都是忽略默认库,但是总感觉这不是一个好办法,于是查找 MSDN,最终发现导致这个警告产生的最主要原因就是[同一个解决方案下,有相互依赖关系的的不同工程使用了不同的运行库],解决方法自然就是把两个项目的运行库设置为统一选项,比方说工程 A 使用了多线程 DLL 运行库,而工程 B 使用了多线程静态库,则必然会导致 LNK 4098 警告,此时只需要

Android的Activity切换动画特效库SwitchLayout,视图切换动画库,媲美IOS

由于看了IOS上面很多开发者开发的APP的视图界面切换动画体验非常好,这些都是IOS自带的,但是Android的Activity等视图切换动画并没有提供原生的,所以特此写了一个可以媲美IOS视图切换动画的Android视图切换动画特效库!SwitchLayout!可以说是目前Android上第一个,也是唯一的一个强大的视图切换动画库引擎! 作者:谭东 QQ:852041173 项目开源!推荐使用jar包形式! 没有经过作者允许,不可修改项目库源码自行发布. 如果你的项目中使用了SwtichLay

原!!win7-64 安装python的 redis客户端库

安装python的redis客户端库 本人系统已装python2.7 利用cmd命令行: 1.cmd-->python -->>>进入python命令下 >>>from urllib import urlopen >>>data = urlopen('http://peak.telecommunity.com/dist/ez_setup.py') >>>open('ez_setup.py','wb').write(data.re

不容忽视的警告:默认库msvcrt.lib与其他库的使用冲突,请使用/NODEFAULTLIB:library

用Visual Studio编译C++项目的时候可能会遇到这个警告:默认库msvcrt.lib与其他库的使用冲突,请使用/NODEFAULTLIB:library. 不要因为是警告就可以不管了,这个问题不解决会给你带来无穷无尽的痛苦. 之所以VS会爆出警告,是因为VS在编译链接的时候发现既链接了msvcrtd.lib又要去链接msvcrt.lib.这种情况往往是因为你引用了地方三库.VS抱怨了而你没有关心,程序虽然编完了,但是一运行就出错,这时再去解决问题就麻烦了,你甚至不知道错在哪里. 还是老

误删除SCVMM中的默认库服务器怎么办?

在创建第一台VMM服务器时,其中有一步要创建库服务器,我们一般都是默认设置,如图 这个共享文件夹默认是放在VMM服务器的C盘,当然你也可以指定其它盘符. 创建完成后默认库服务器就是VMM服务器本身,这是默认情况. 今天讨论的就是如果将这个默认库服务器删除掉怎么办?小伙伴可能会想删掉了重新加就可以,重新加是可以但是有几个问题需要注意. 删掉之后就是这样了,那我们来重新添加默认库服务器,也就是VMM服务器本身. 添加库服务器,输入我们VMM管理员账户和密码. 通过搜索AD中的计算机,将VMM服务器本

Redis默认配置文件redis.conf详解

# Redis配置文件样例 # Note on units: when memory size is needed, it is possible to specifiy # it in the usual form of 1k 5GB 4M and so forth: # # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 bytes # 1mb => 1024*1024 bytes # 1g => 10000000

springboot整合mybatis,redis,代码(二)

一 说明: springboot整合mybatis,redis,代码(一) 这个开发代码的复制粘贴,可以让一些初学者直接拿过去使用,且没有什么bug 二 对上篇的说明 可以查看上图中文件: 整个工程包括配置,对对应上文的配置 原文地址:https://www.cnblogs.com/xiufengchen/p/10327501.html

springboot+jpa+mysql+redis+swagger整合步骤

springboot+jpa+MySQL+swagger框架搭建好之上再整合redis: 在电脑上先安装redis: 一.在pom.xml中引入redis 二.在application.yml里配置redis,单独说明:redis刚一开始安装好是没有设置密码的.否则,会报connection错误. 三.在service配置Redis,需要说明的在方法前配置@Cacheable中只有value没有可以,key默认跟value一样. 四.在controller里实现Redis的一种方式 原文地址:h