lettuce2_masterreplica
Lettuce Redis Master/Replica
 
Redis Developer Course
 | 
 
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
	
	
	답글이 올라오면 이메일로 알려드리겠습니다.
	
 
