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
답글이 올라오면 이메일로 알려드리겠습니다.