Spring Boot ‐ Spring Data Reactive Redis란? - dnwls16071/Backend_Summary GitHub Wiki

Spring Data Reactive Redis

Spring Data Redis vs Redisson vs Spring Data Reactive Redis

구분 Spring Data Redis Redisson Spring Data Reactive Redis
프로그래밍 모델 동기(Sync) 기반 동기 + 비동기 + Reactive 모두 지원 완전 Reactive (Non-blocking)
사용 목적 캐시, 간단한 Key-Value 접근 분산 락, RMap, RList, RQueue 등 고급 Redis 기능 제공 고성능 Non-blocking I/O 기반 처리
Redis 프로토콜 사용 방식 Lettuce/Jedis 기반 추상화 자체 Redis Client + 고급 구조체 제공 Lettuce Reactive 기반 직접 접근
분산 락 지원 제한적 (직접 구현해야 함) 강력한 분산 락 기능 제공(RLock) 직접 Lua Script 등으로 구현 필요
데이터 구조 활용성 기본적(Hash, List, Set 등) Redis를 Java 컬렉션처럼 사용 가능 (RMap, RList …) 기본 구조 (Reactive로 제공)
트랜잭션 지원 (MULTI/EXEC) 지원 Reactive Transaction 지원
Pipeline / PubSub 지원 지원 Reactive 기반으로 자연스럽게 지원
성능 보통 (Sync → 블로킹) 보통~좋음(비동기 기능 효율적) 최고 수준 (Non-blocking Netty)
커넥션 풀 관리 Lettuce/Jedis 위임 자체 커넥션 풀 최적화 Reactive Netty 기반 효율적
클러스터 지원 지원 더 강력한 자동 failover/재전연결 지원 지원
학습 난이도 쉬움 보통 (기능이 많음) 중간~높음 (Reactive 학습 필요)
주요 장점 Spring 생태계와의 통합이 뛰어남 분산락, Fair Lock, RedLock 등 고급 기능 Reactive WebFlux와 자연스럽게 통합
주요 단점 블로킹 I/O 라이브러리가 무겁고 추상화가 깊음 모든 호출이 Reactive여야 해서 러닝커브 큼
실무 사용 추천 간단한 캐시, Token 관리 분산 락, 재시도 로직, 고급 자료구조가 필요한 경우 고성능 스트리밍, 대량 트래픽 처리

Cache Aside Pattern

  • 캐시로부터 데이터를 읽는 시도를 한다.
  • 만약 데이터가 없다면 DB를 조회하고 있다면 캐시로부터 조회한다.
  • 결과를 반환한다.

@Cacheable 어노테이션

Cache Evict

Scheduled Cache Evict

@CachePut 어노테이션