
이전 글에서 Redis Connection 과 Configuration 을 진행하였다면 다음으로는 Redis 실제로 사용하는 코드를 작성해볼까 합니다. 이번에는 서버의 헬스 체크를 하는 모듈을 작성해보았어요. @Component public class RedisComponent { @Resource(name = "redisTemplate") private ValueOperations valueOperations; private String checkedSuffix = "-checked"; public boolean isServerDown(String serverName) { final String value = valueOperations.get(serverName); if(value == null) {..

이전 글에서 캐시에 대해 기본적으로 작성을 하였으니 이번에는 캐시 메모리를 사용하는 데이터베이스 중에 하나인 레디스에 대해 간략하게 구성하는 방법을 알려드리고자 합니다. 기본적으로 AutoConfiguration 이 가능하지만 사용자의 설정에 맞게 설정을 할 수도 있습니다. 환경 Spring Boot 2.5.0 JDK 11 Java 11 build.gradle 에 아래와 같이 의존성을 추가해줍니다. implementation 'org.springframework.boot:spring-boot-starter-data-redis' 그리고 추가로 저같은 경우 다른 *.properties 파일을 사용했기 때문에 아래와 같은 의존성 하나를 더 추가해주었습니다. implementation 'org.springfra..
DTO 를 Redis 에 넣어 호출하려는 와중 다음과 같은 에러가 발생하였습니다. org.springframework.data.redis.serializer.SerializationException: Could not read JSON: Cannot construct instance of `java.time.LocalDateTime` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator) 찾아보니 이 방법은 Java의 Jackson Mapper의 버전와 관련된 문제여서 이전의 경우 Serialize를 하지 못해 발생하는 문제였습니다. 그래서..

작은 프로젝트를 진행할 때도 메시지 브로커는 아키텍처에 따라 필요한 경우가 종종 있습니다. 이때 Apache kafka를 쓰자니 배보다 배꼽이 커지고, 클라우드의 메시지 큐(AWS SQS 등)를 사용하자니 벤더 락인(vendor lock-in)이 우려될 때 Redis stream은 아주 좋은 대안이 됩니다. 혹시 kafka를 redis pub/sub과 비교하려 한다면 정확한 비교가 안되는데 토픽 개념은 유사하지만 redis pub/sub에는 소비자 그룹의 개념이 없기 때문입니다. ( stream에서 xread의 경우에는 소비자 그룹을 사용하지 않습니다. xgroupread로 접근하는게 맞습니다. 소비자 그룹의 개념이 들어가면서 메시지가 잘 도착했는지 확인이 가능합니다. 혹시 메시지 전달의 성공/실패/처리..

Author: 니용 서버 개발자라면 한 번은 들어본 Redis라는 캐시 메모리가 있습니다. 성능적인 면에서도 우수하고 부하가 거의 없기에 잘 사용하고 있는 라이브러리 중 하나이지요. Java는 2가지의 Redis Client를 지원합니다. 1. Jedis 2. Lettuce 이전에는 발생하지 않았었는데 최근 Spring Boot의 버전이 업그레이드되면서 자연스럽게 Jedis가 deprecated 되는 증상이 발생하였습니다. Boot Version 2.1.x 정도였을 것으로 생각됩니다. 사용을 아예 못하는 것은 아니지만 찜찜하기에... 그래서 이번에 라이브러리 업데이트를 하려고 합니다. 먼저 이전에 적용되어 있던 Jedis 관련 gradle을 뜯어보겠습니다. Jedis build.gradle depende..