springboot项目启动,需要将msg_info这个表的 词条加载到redis,key+object的形式,设置永不过期,每次启动先删除表再重新加载
时间: 2023-12-10 09:37:32 浏览: 64
可以通过在Spring Boot项目启动时,使用Bean的方式将msg_info表中的词条加载到Redis中,并设置为永不过期。具体实现步骤如下:
1. 引入Redis依赖
在pom.xml文件中添加以下依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
```
2. 配置Redis连接信息
在application.properties或application.yml文件中配置Redis连接信息,例如:
```properties
spring.redis.host=127.0.0.1
spring.redis.port=6379
```
3. 编写Redis配置类
创建一个RedisConfig类,使用@Configuration注解标记该类为配置类,使用@Bean注解标记一个方法将RedisTemplate注入到Spring容器中,代码如下:
```java
@Configuration
public class RedisConfig {
@Autowired
private RedisConnectionFactory redisConnectionFactory;
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
return template;
}
}
```
其中,使用@Autowired注解注入RedisConnectionFactory对象,使用@Bean注解注入RedisTemplate对象。在RedisTemplate中,我们设置了key的序列化方式为StringRedisSerializer,value的序列化方式为GenericJackson2JsonRedisSerializer。
4. 编写启动加载方法
创建一个RedisLoader类,在该类中编写一个方法,用于将msg_info表中的词条加载到Redis中,代码如下:
```java
@Component
public class RedisLoader implements CommandLineRunner {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public void run(String... args) throws Exception {
// 删除之前的数据
redisTemplate.delete(redisTemplate.keys("msg_info:*"));
// 从数据库中加载数据
List<Map<String, Object>> dataList = jdbcTemplate.queryForList("select * from msg_info");
// 将数据保存到Redis中
for (Map<String, Object> data : dataList) {
String key = "msg_info:" + data.get("id");
redisTemplate.opsForValue().set(key, data, -1);
}
}
}
```
该类使用@Component注解将该类注入到Spring容器中,并实现CommandLineRunner接口,重写run方法。在run方法中,我们先删除之前保存在Redis中的msg_info的数据,然后从数据库中加载数据,最后将数据保存到Redis中。
5. 启动项目
启动Spring Boot项目,程序在启动时会自动执行CommandLineRunner的run方法,将msg_info表中的数据加载到Redis中。
以上就是将msg_info表的词条加载到Redis中的具体实现方式。