- Spring Data Redis2023년 06월 03일
- starryeye
- 작성자
- 2023.06.03.:57
Spring Data Redis 에 대해 알아보자..
Spring Data Redis 의 간단한 이해
Spring Data Redis 는 Redis 데이터베이스와 상호작용할 수 있게 해주는 프레임워크이다.
Spring Data Redis 는 Spring Data Jpa 처럼
Spring Data 프로젝트의 일부이다.
JPA 를 사용한 데이터 엑세스를 위한 많은 보일러플레이트 코드를 줄일 수 있었는데..
마찬가지로, Spring Data Redis 도 Redis 를 사용한 데이터 엑세스를 굉장히 간단하게 해준다.
사실 여기까지만 말해도 Spring Data Jpa 를 이미 알고 있다면 벌써 감이 많이 잡힐 것이다..
Redis 의 라이브러리
1. Jedis
- Spring Data Redis 에서 지원하는 Client 중 하나이다.
- 단순하고 직관적인 API 를 제공하고 사용하기 쉽다.
- Jedis 는 Thread-Safe 하지 않아서 각 스레드에서 새로운 Jedis 인스턴스를 생성해야 한다..
따라서, 멀티 쓰레드 환경에서는 커넥션 관리가 힘들 수 있다.
-> 잘 사용되지않는 이유이다.
- 동기식, 블로킹 연산만 지원한다.
(응답이 오면 다음 코드 라인으로 넘어간다.)
2. Lettuce
- Spring Data Redis 에서 지원하는 Client 중 하나로, Default Client 이다.
- 멀티 쓰레드에서 Thread-Safe 하다. 여러 쓰레드에서 하나의 Lettuce 인스턴스를 공유할 수 있다.
- 동기, 비동기, 리액티브 모드를 모두 지원한다.
(비동기: Redis 서버에 명령을 보낸 후, 바로 다음 작업을 수행하고 응답이 오면 콜백 함수를 통해 처리)
(리액티브: 데이터 스트림에 반응하여 연속적인 데이터 요청/응답에 대해 비동기 처리를 수행)
- 내부적으로 Netty 기반의 Event-Driven 아키텍처를 사용하여
하나의 연결로 많은 수의 동시 요청을 처리할 수 있다.
3. Redisson
- Spring Data Redis 에서 지원하지 않지만, Java/Spring 과 함께 사용 할 수 있도록 만들어져 있다.
- 분산 환경에서 필요한 기능을 제공한다. (ex. 분산 락)
Jedis, Lettuce 에서는 제공되지 않는다.
- 리액티브 방식이다.
RedisTemplate
이러한 Redis Client 위에서 Redis Client 를 이용하여 Redis Server 와 쉽게 통신 할 수 있도록
Spring Data Redis에서 제공하는 객체이다.
Spring Application 에서 Redis Sever 와 통신하기 위해..
Redis Client 는 저수준의 추상화를.. RedisTemplate 은 고수준의 추상화를 담당한다고 생각하자.
Spring 에서 관계형 데이터베이스와 상호작용할 수 있게 도와주는 JdbcTemplate 이 있다면..
Spring Data Redis 에서 Redis 데이터베이스와 상호작용하도록 도와주는게 RedisTemplate 이다.
다만, 데이터베이스 모델과 지원하는 프로젝트가 다르므로.. 사용법에 대한 차이는 존재한다.
RedisTemplate 은 다양한 Redis Data Type 들을 쉽게 사용할 수 있도록 도와준다.
내부적으로 커넥션 풀을 지원한다. (HiKariCP 의 역할)
RedisTemplate 이 제공하는 opsForXXX 로 XXXOperations 타입 객체를 얻을 수 있고..
해당 객체는 각 Redis Data Type 들을 사용할 수 있도록 지원해준다.
(ValueOperations: Redis Strings, ListOperations: Redis Lists, ZSetOperations: Sorted Set 등)
StringRedisTemplate 이라고 있는데..
해당 객체는 RedisTemplate<String, String> 의 특수 케이스라 보면 된다.
Redis 에서 사용되는 가장 일반적인 Data Type 이 Strings 라.. 문자열 처리에 효율적으로 설계되어있다.
CrudRepository
Spring Data Jpa 를 사용했다면 잘 알 것이다.
Spring Data는 데이터 저장소에 관계없이 일관된 방식으로 데이터에 액세스할 수 있도록 해주는 프레임워크이다.
Spring Data는 데이터 저장소와 상호 작용하는데 필요한 공통 패턴을 추상화하여 간소화시키는 역할을 한다.
CrudRepository는 Spring Data의 핵심 인터페이스 중 하나이며,
CRUD(Create, Read, Update, Delete) 작업에 대한 간편화를 돕는다.
CrudRepository 인터페이스는 기본적으로 다음과 같은 메소드를 제공한다..
(ex. findById, save, findAll, deleteById 등)
Spring Data Redis 에서는 JpaRepositoy 를 사용하는 것 처럼
CrudRepository 를 상속받아서 Redis 와 상호작용하는 방법을 제공한다.
'Spring > DB, Cache 연동' 카테고리의 다른 글
JPA Merge, Dirty Check (0) 2023.06.06 Spring Cache Annotation (0) 2023.06.04 Spring 의 DB 연동 기술 히스토리 요약 (0) 2023.03.10 JPA 핵심 정리 - 모음 (0) 2023.02.22 JPA 핵심 정리 - EntityManager (0) 2023.02.22 다음글이전글이전 글이 없습니다.댓글