본문 바로가기

dev/스프링

Spring Boot Redis 연계

스프링 부트에서 Redis에 데이터를 저장하고 조회하는 방법입니다.

 

Redis에서 지원하는 데이터 구조 String, List, Hash를 사용할 것입니다.

 

pom.xml

 

스프링 부트와 Redis를 연계하기 위해 spring-boot-starter-data-redis 라이브러리를 추가합니다.

 

RedisConfig.class

 

RedisConfig 클래스는 Redis와의 연결과 데이터 직렬화를 설정하는 역할을 맡고 있습니다.

 

application.yml에 있는 Redis host와 port를 속성으로 받습니다.(16 ~ 20라인)

 

RedisStandaloneConfiguration 클래스를 통해 Redis 연결 설정을 구성하고

 

LettuceConnectionFactory 클래스를 통해 실제 Redis에 연결하는 빈을 등록합니다.(22 ~ 29라인)

 

Redis에 데이터를 저장하고 검색하는 redisTemplate 빈을 등록합니다.

 

Redis에 저장되는 키와 해시 키는 StringRedisSerializer 클래스를 통해 직렬화 설정하고

 

값과 해시 값은 GenericJackson2JsonRedisSerializer 클래스를 통해 직렬화 설정합니다.

 

StringRedisSerializer 클래스는 문자열을 직렬화하고, GenericJackson2JsonRedisSerializer 클래스는 JSON을 직렬화하는데 적합합니다.

 

redisTemplate이 사용될 Redis 연결을 설정합니다.(31 ~ 41라인)

 

RedisStringDto.class

 

클라이언트로부터 Redis 문자열을 처리하는 RedisStringDto클래스입니다.

 

RedisController.class

 

클라이언트로부터 Redis 문자열 데이터 요청을 처리하는 RedisController.class입니다.

 

RedisServiceImp.class

 

Redis 문자열 데이터를 저장하고 조회하는 RedisServiceImp.class입니다.

 

여기서 주의 깊게 봐야 되는 점은 문자열 데이터를 저장할 때 만료시간을 1시간으로 설정하는 점입니다.(21 ~ 24라인)

 

Postman 실행 화면

 

Redis 조회 화면

 

Postman으로 문자열을 저장하면 정상적으로 실행된 것을 확인할 수 있습니다.

 

RedisListDto.class

 

클라이언트로부터 Redis 리스트를 처리하는 RedisListDto 클래스입니다.

 

RedisController.class

 

클라이언트로부터 Redis 리스트 데이터 요청을 처리하는 RedisController.class입니다.

 

RedisServiceImp.class

 

Redis 리스트 데이터를 저장하고 조회하는 RedisServiceImp.class입니다.

 

앞의 문자열 데이터와 똑같이 리스트 데이터를 저장할 때 만료시간을 1시간으로 설정합니다.(31 ~ 35라인)

 

여기서 주의해야 할 점은 List의 GenericType이 Object이어야 하는 점입니다.

 

가변인자 파라미터 타입 rightPushAll 메소드 호출 결과

 

GenericType이 Object가 아니면 Collections<Object> 파라미터 타입 rightPushAll 메소드가 호출되는 것이 아니라

 

가변 인자 파라미터 타입 rightPushAll 메소드가 호출돼서 리스트 요소를 하나씩 저장하지 않고 그대로 저장하기 때문입니다.

 

Postman 실행 화면

 

Redis 조회 화면

 

Postman으로 리스트를 저장하면 정상적으로 실행된 것을 확인할 수 있습니다.

 

RedisHashDto.class

 

클라이언트로부터 Redis 해시를 처리하는 RedisHashDto 클래스입니다.

 

RedisController.class

 

클라이언트로부터 Redis 해시 데이터 요청을 처리하는 RedisController.class입니다.

 

RedisServiceImp.class

 

Redis 해시 데이터를 저장하고 조회하는 RedisServiceImp.class입니다.

 

마찬가지로 해시 데이터를 저장할 때 만료시간을 1시간으로 설정합니다.(31 ~ 35라인)

 

Postman 실행 화면

 

Redis 조회 화면

 

Postman으로 해시를 저장하면 정상적으로 실행된 것을 확인할 수 있습니다.

'dev > 스프링' 카테고리의 다른 글

Spring Controller ResponseEntity  (0) 2024.04.20
Spring RestControllerAdvice  (0) 2024.03.29
Spring Boot Redis Suscriber WebSocket  (0) 2024.02.29
Spring Boot Redis Subscriber  (0) 2024.02.08
Spring Boot Redis Publisher  (0) 2024.02.05