springboot将redis哈希数据遍历后同步到MySQL,写出service接口,service层,dao层,controller层,实体类
时间: 2023-05-27 18:02:06 浏览: 76
实体类:
```java
public class RedisHash {
private String key;
private Map<String, String> fields;
// Getter和setter省略
}
```
Service 接口:
```java
public interface RedisHashSyncService {
void sync(String key);
}
```
Service 层:
```java
@Service
public class RedisHashSyncServiceImpl implements RedisHashSyncService {
private final RedisTemplate<String, Object> redisTemplate;
private final RedisHashDao redisHashDao;
@Autowired
public RedisHashSyncServiceImpl(RedisTemplate<String, Object> redisTemplate, RedisHashDao redisHashDao) {
this.redisTemplate = redisTemplate;
this.redisHashDao = redisHashDao;
}
@Override
public void sync(String key) {
// 获取Redis中的哈希数据
Map<Object, Object> redisMap = redisTemplate.opsForHash().entries(key);
RedisHash redisHash = new RedisHash();
redisHash.setKey(key);
// 将Redis的哈希数据转为Map<String, String>
Map<String, String> fields = new HashMap<>();
redisMap.forEach((k, v) -> fields.put(String.valueOf(k), String.valueOf(v)));
redisHash.setFields(fields);
// 同步至MySQL
redisHashDao.save(redisHash);
}
}
```
Dao 层:
```java
@Repository
public interface RedisHashDao extends JpaRepository<RedisHash, Long> {
}
```
Controller 层:
```java
@RestController
@RequestMapping("/redis-hash-sync")
public class RedisHashSyncController {
private final RedisHashSyncService redisHashSyncService;
@Autowired
public RedisHashSyncController(RedisHashSyncService redisHashSyncService) {
this.redisHashSyncService = redisHashSyncService;
}
@GetMapping("/{key}")
public void sync(@PathVariable String key) {
redisHashSyncService.sync(key);
}
}
```