RedisTemplate 이란?
- Spring Data Redis 에서 쓰는 핵심 클래스이다.
- Redis 내부에 있는 데이터 액세스를 도와주는 헬퍼 클래스이다.
- 클라이언트에서 작성해야 하는 레디스 공통로직을 제공해 레디스 이용을 편리하게 할 수 있도록 도와준다.
역할
커넥션 관리 (Connection management)
- 레디스 서버와 연결 시에 커넥션 풀과 리소스를 대신 관리해준다.
- 이로 인해 개발자는 직접 커넥션을 열거나 닫을 필요가 없어진다.
직렬화와 역직렬화 지원 (Serialize and Deserialize)
- 자바 Serializer 를 통해 Redis 스토리지와 데이터를 직렬화/역직렬화한다.
- 다른 여러 직렬화 기법도 제공하는데 문자열만 사용한다면
StringRedisTemplate 을 사용하는 것이 좋다.
- 데이터 타입에 맞는 직렬화와 역직렬화 방식을 Serializer 의 형태로 지원하여 타입에 따른 효율적인 통신이 가능하다.
- 기본 값은
JdkSerializationRedisSerializer 이고 StringRedisSerializer 와 Jackson2JsonRedisSerializer 같은 상황에 맞는 좋은 Serializer 도 제공한다.
- 원한다면 사용자 정의 Serializer 를 구성하는 것도 가능하다.
예외 해석 (Excpetion Translation)
- Redis 의 low-level 예외 메세지를 스프링의
DataAccessException 계층 예외로 번역해준다.
- 스프링 프레임워크에서 예외를 다루는데 도움이 된다.
try {
// redis template operaiton
} catch (DataAccessException e) {
// redis template exceptions...
} catch (Exception e) {
// other exceptions...
}
고수준의 연산 (High-level operation)
- Keys, Strings, Hashes, Lists, Sets, Sorted Sets 와 같은 커멘드를 실행할 수 있도록 고수준 연산 API 를 제공한다.
- 이런 고수준 연산 API 는 raw commands 없이 레디스와 소통하는데 도움을 준다.
Thread safety
RedisTemplate 은 thread-safe 하여 멀티스레드 애플리케이션에서도 동시성 이슈 걱정없이 사용 가능하다.
다른 스프링 컴포넌트와의 결합
- 다른 스프링 컴포넌트와 결합하여 caching, messaging 등을 이용하기 편리하다.