springboot redis切换db

本文介绍如何在Spring Boot项目中配置并使用Redis。通过示例代码展示了依赖引入、连接池配置及基本操作,如设置数据库、进行键值对读写等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

 
@Autowired
private StringRedisTemplate stringRedisTemplate;

int db = 1;
JedisConnectionFactory jedisConnectionFactory = (JedisConnectionFactory) stringRedisTemplate.getConnectionFactory();
jedisConnectionFactory.setDatabase(db);
stringRedisTemplate.setConnectionFactory(jedisConnectionFactory);
ValueOperations valueOperations = stringRedisTemplate.opsForValue();

 

### 配置和使用 Redis 多库支持 在 Spring Boot 中配置并使用 Redis 的多个数据库实例或多库支持可以通过自定义 `RedisTemplate` 实现。对于不同业务逻辑的数据隔离需求,可以针对不同的 Redis 数据库存储不同类型的数据。 #### 创建基础配置类 为了简化多库管理,建议先创建一个通用的基础配置类来处理基本设置: ```java @Configuration public abstract class BaseRedisConfig { @Autowired private RedisConnectionFactory redisConnectionFactory; protected RedisTemplate<String, Object> getRedisTemplate(int databaseIndex) { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(redisConnectionFactory); // 设置序列化工具 Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); template.setValueSerializer(jackson2JsonRedisSerializer); template.setKeySerializer(new StringRedisSerializer()); ConnectionFactoryUtils.getConnection(template.getConnectionFactory()).setDb(databaseIndex); template.afterPropertiesSet(); return template; } } ``` 此代码片段展示了如何构建一个可重用的方法用于初始化特定编号的 Redis 数据库连接[^2]。 #### 定义具体业务场景下的 Redis 配置 接着为每一个需要独立使用的 Redis 库编写具体的配置类,比如下面的例子分别代表教师和学生的专属缓存空间: ```java // 教师专用Redis配置 @Configuration public class TeacherRedisConfig extends BaseRedisConfig { @Value("${teacher.redis.db.index}") private int teacherDatabase; @Bean(name = "teacherRedisTemplate") public RedisTemplate<String, Object> teacherRedisTemplate() { return super.getRedisTemplate(teacherDatabase); } } // 学生专用Redis配置 @Configuration public class StudentRedisConfig extends BaseRedisConfig { @Value("${student.redis.db.index}") private int studentDatabase; @Bean(name = "studentRedisTemplate") public RedisTemplate<String, Object> studentRedisTemplate(){ return super.getRedisTemplate(studentDatabase); } } ``` 上述代码中,通过继承之前建立的基础配置类,并利用 `@Value` 注解获取来自 application.properties 或者其他外部化的属性文件中的数据库索引值,从而达到灵活切换的目的。 #### 修改应用程序属性文件 最后,在项目的应用配置文件(application.yml 或 .properties)里添加相应的参数声明: ```yaml # YAML 格式的配置示例 spring: redis: host: localhost port: 6379 teacher: redis: db: index: 5 student: redis: db: index: 3 ``` 这样就完成了整个流程的设计与实施工作,使得可以在同一个 Spring Boot 工程内操作多个 Redis 数据库实例了[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值