前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot如何切换Redis默认库

SpringBoot如何切换Redis默认库

原创
作者头像
niceyoo
修改2020-01-19 17:48:52
4.8K0
修改2020-01-19 17:48:52
举报
文章被收录于专栏:niceyooniceyoo

一些闲扯的话

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

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

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

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

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

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

方式一:配置文件方式

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

1、application.properties
代码语言:txt
复制
spring.redis.database=0
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=1234
2、application.yml
代码语言:txt
复制
spring
  redis:
    host: 127.0.0.1
    port: 6379
    password: 1234
    database: 0

方式二:JedisConnectionFactory

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

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

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

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

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一些闲扯的话
  • 方式一:配置文件方式
  • 方式二:JedisConnectionFactory
  • 面试:你们是如何切换Redis数据库的?
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档