• 티스토리 홈
starryeye
  • 프로필사진
    starryeye
    • 분류 전체보기 (189)
      • C++ (17)
      • Java (24)
      • OOP (5)
      • Spring Reactive Stack (12)
        • Reactive Streams (3)
        • Netty (4)
        • Reactor (1)
        • Webflux (3)
        • DB, Cache 연동 (1)
      • Spring (90)
        • Core (17)
        • MVC (33)
        • Client (2)
        • Security (4)
        • DB, Cache 연동 (33)
      • DataBase (12)
        • RDBMS (2)
        • NoSQL (10)
      • Message Broker (6)
      • Web (4)
      • Network (4)
      • 대규모 시스템 설계 (15)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • Spring Data Redis
        2023년 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
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바