Lettuce Redis Master/Replica

레디스 개발자 교육 신청 레디스 정기점검/기술지원
Redis Technical Support
레디스 엔터프라이즈 서버
Redis Enterprise Server

Lettuce Redis Master/Replica

이 문서는 레터스(Lettuce)를 이용해서 레디스 마스터/복제(Master/Replica) 용 Java Spring 애플리케이션을 개발하는 방법을 설명합니다.


기본 사용법

① RedisURI redisURI = RedisURI.Builder.redis(host[0], Integer.parseInt(host[1])) ...
Redis 서버의 주소(ip와 port)와 추가 정보로 RedisURI list를 생성합니다.
② redisClient = RedisClient.create();
RedisClient 인스턴스를 생성합니다.
③ masterReplicaConnection = MasterReplica.connect(redisClient, StringCodec.UTF8, redisURIs);
Redis 서버(Master/Replica)에 연결합니다.
④ masterReplicaConnection.setReadFrom(redisProps.getReadFrom());
조회 명령은 복제서버에서 실행하기 위해 ReadFrom을 설정합니다.
ReadFrom 각 값에 대한 자세한 설명은 여기를 보세요.
⑤ redisSyncCommands = masterReplicaConnection.sync();
Sync 명령 실행용 API를 얻습니다.

Source code

Master/Replica 구성과 Pub/Sub과의 관계

Master/Replica 구성에서는 Pub/Sub을 사용할 수 없습니다.
자세한 내용은 여기를 보세요
사용하려면 Master에 Standalone으로 연결해서 사용하면 됩니다.


Lettuce Spring Project

Spring Project 생성

Java Spring Project 생성 URL: start.spring.io

  • Project: Gradle-Groovy
  • Language: Java
  • Spring Boot: 3.1.8
  • Project Metadata
    • Group: com.redisgate
    • Artifact: MasterReplciaLettuce -> Project 명칭, 이 이름으로 압축파일이 생긴다.
    • Name: Main -> Main Class Name
    • Description: Redis MasterReplcia Lettuce Application -> 설명
    • Package name: com.redisgate.redis -> Package Name
    • Packaging: Jar
    • Java: 17 -> Java 버전 선택
  • Dependencies에서 [ADD … CTRL + B] 버튼을 클릭해서 아래 3개를 추가합니다.
    • Spring Web
    • Lombok
    • Spring Data Redis(Access+Driver)
  • 마지막으로 [GENERATE CTRL + ⏎ ] 버튼 클릭해서 압축 파일(zip)을 다운받는다.
  • 스프링부트3.x 는 자바17 이상, 스프링부트 2.x는 자바11을 사용합니다.

이 프로젝트에 사용된 Lettuce, Spring, Redis 버전

  • Lettuce-6.2.7
  • Spring-Boot: 3.1.8, Spring: 6.0.16
  • Redis-7.2.3

Main Class

application.properties

RedisProps class

application.properties 파일을 읽어오는 클래스.

  • masterReplicas의 IP:Port 목록은 순서를 유지하는 List를 사용했습니다.
  • password는 char[]를 사용한다. String을 사용하면 적용 시 getPassword().toCharArray()를 사용해야 합니다.
  • readFrom 문자열을 ReadFrom 값으로 변경하는 getReadFrom()이 추가되었습니다.

RedisConn class

Redis 서버에 연결합니다.
ConnectTimeout은 ClientOptions을 사용해서 설정합니다.

RedisController class

  • SET 테스트: http://localhost:8080/set/key01
  • GET 테스트: http://localhost:8080/get/key01
    GET 명령이 복제서버에 실행되는 것을 확인하기 위해서 아래와 같이 redis-cli를 실행 후 위 get 명령을 실행합니다.
    $ bin/redis-cli -p 6001 -a redisgate --stat
  • PING 테스트: http://localhost:8080/ping -> 마스터에서 실행됩니다.


<< Pub/Sub Master/Replica Sentinel >>

Email 답글이 올라오면 이메일로 알려드리겠습니다.