https://stackoverflow.com/questions/23208010/drying-up-a-generic-redistemplate-in-spring-4
코드는 아래. Redis 의 hash operation 에만 사용된다
@Component
@RequiredArgsConstructor
public class RedisUtil {
private HashOperations<String, String, Object> hashOperations;
private final StringRedisTemplate redisTemplate;
private final ModelMapper modelMapper;
@PostConstruct
public void init() {
this.hashOperations = redisTemplate.opsForHash();
}
public <T> T get(String key, String hashKey, Class<T> type) {
Object o = hashOperations.get(key, hashKey);
return modelMapper.map(o, type);
}
public <T> List<T> getAll(String key, Class<T> type) {
List<T> list = new ArrayList<>();
for (Object o : hashOperations.values(key)) {
list.add(modelMapper.map(o, type));
}
return list;
}
public boolean isEmpty(String key, String hashKey) {
return hashOperations.hasKey(key, hashKey);
}
public void remove(String key, String hashKey) {
hashOperations.delete(key, hashKey);
}
}
아래의 테스트 코드에서 일단 출력해 보았는데 정상 작동 하는걸 확인할 수 있었다.
model mapper 를 사용해서 바로 response 로 받을수 있어 편리했다.
public class RedisTest {
private final RedisUtil redisUtil;
@Test
@Description("redis util 정상작동 테스트")
public void RedisUtilExecutionTest() {
redisUtil.getAll(SERVICE:001", BannerResponse.class)
.stream().forEach(System.out::println);
System.out.println(redisUtil.get("SERVICE:001", "1", BannerResponse.class));
System.out.println(redisUtil.isEmpty("SERVICE:001", "1"));
System.out.println(redisUtil.isEmpty("SERVICE:001", "2"));
}
}
출처,참고 :
https://prodo-developer.tistory.com/157
https://stackoverflow.com/questions/47853416/how-to-autowire-redistemplatestring-object
반응형
'spring' 카테고리의 다른 글
[Spring] Transaction PROPAGATION.REQUIRES_NEW 의 '독립'이란 의미? (0) | 2022.08.24 |
---|---|
[토비의 스프링 3.1] 3장 - 템플릿/콜백의 응용 (0) | 2022.05.01 |
Quartz Tutorials 정리(중) (2) | 2021.10.16 |
[Spring Batch] 잡 관리 컴포넌트 - 1. JobExplorer (0) | 2021.10.13 |
[Spring Boot 실행 오류]The Tomcat connector configured to listen on port 8080 failed to start. The port may already be in use or the connector may be misconfigured. (0) | 2019.08.18 |