springboot整合redis+mysql数据导入redis
时间: 2023-11-10 12:04:20 浏览: 176
要实现Spring Boot整合Redis和MySQL,并将数据从MySQL导入Redis,可以按照以下步骤进行:
1. 在pom.xml文件中添加Redis和MySQL的依赖。
2. 在application.properties文件中配置Redis和MySQL的连接信息。
3. 创建一个RedisConfig类,用于配置RedisTemplate。
4. 创建一个MySQLConfig类,用于配置DataSource和JdbcTemplate。
5. 创建一个Service类,用于从MySQL中读取数据,并将数据存储到Redis中。
6. 在Controller中调用Service类中的方法,从Redis中读取数据并返回给前端。
下面是一个简单的示例代码:
1. pom.xml文件中添加Redis和MySQL的依赖:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
```
2. application.properties文件中配置Redis和MySQL的连接信息:
```
# Redis
spring.redis.host=localhost
spring.redis.port=6379
# MySQL
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
```
3. 创建一个RedisConfig类,用于配置RedisTemplate:
```
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(factory);
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
return template;
}
}
```
4. 创建一个MySQLConfig类,用于配置DataSource和JdbcTemplate:
```
@Configuration
public class MySQLConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
```
5. 创建一个Service类,用于从MySQL中读取数据,并将数据存储到Redis中:
```
@Service
public class UserService {
private final JdbcTemplate jdbcTemplate;
private final RedisTemplate<String, Object> redisTemplate;
public UserService(JdbcTemplate jdbcTemplate, RedisTemplate<String, Object> redisTemplate) {
this.jdbcTemplate = jdbcTemplate;
this.redisTemplate = redisTemplate;
}
public List<User> getAllUsers() {
List<User> users = jdbcTemplate.query("SELECT * FROM user", new BeanPropertyRowMapper<>(User.class));
users.forEach(user -> redisTemplate.opsForValue().set("user:" + user.getId(), user));
return users;
}
}
```
6. 在Controller中调用Service类中的方法,从Redis中读取数据并返回给前端:
```
@RestController
public class UserController {
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping("/users")
public List<User> getAllUsers() {
List<User> users = (List<User>) userService.redisTemplate.opsForValue().get("users");
if (users == null) {
users = userService.getAllUsers();
userService.redisTemplate.opsForValue().set("users", users);
}
return users;
}
}
```
阅读全文