springboot_lettuce_multidatasource
Lettuce Multi Data Source
Redis Developer Course | Redis Technical Support | Redis Enterprise Server |
---|
Lettuce Multi Data Source
Lettuce RedisClient를 이용해서 Redis Standalone, Master-Replica, Sentinel, Cluster 각 데이터 소스(서버)에 연결하고 메소드(명령)을 실행하는 방법을 설명합니다.
Project 생성: start.spring.io
Spring Boot: 3.1.4
Spring: 6.0.12
Lettuce: 6.2.6
Redis: 7.0.10
Spring: 6.0.12
Lettuce: 6.2.6
Redis: 7.0.10
application.properties
- redis.masterReplicas: 마스터와 복제노드를 구분하지 않고 일렬로 나열했다. MasterReplica.connect()에서는 마스터와 복제노드를 구분하지 않고 설정한다.
- redis.sentinel.redisPassword: 센티널이 모니터(관리)하는 레디스 서버의 password를 구분해서 지정했다.
- 센티널 서버의 password는 설정하지 않는다. 설정하면 센티널에 연결할 수 없습니다. 접속 문자열(redis-sentinel://password)는 레디스 서버의 password를 지정하는 것입니다.
Main Class: LettuceMultiDataSourceApplication
Class RedisConfig
- application.properties에서 콤마(,)로 구분된 서버 정보(IP:Port)를 읽어 올 때는
Set<String> masterReplicas, sentinelNodes, clusterNodes를 사용합니다.
주의: 서버 정보(IP:Port)를 String으로 읽어서 StringUtils.split(replicas, ",")를 사용해서 구분할 경우 IP 앞에 space가 붙어서 서버 연결이 되지 않습니다. - RedisClient 생성과 연결(connect)는 각 Repository에서 합니다. 각 Repository에서 연결하는 것이 더 적절합니다.
- ReadFrom getReadFrom(): application.properties에서 readFrom을 읽어서 Lettuce의 ReadFrom으로 변환합니다.
Class RedisStandaloneRepository - 단독 서버 레파지토리
RedisClient를 생성하고 레디스 서버에 연결합니다.
Class RedisMasterReplicaRepository - 마스터-복제 서버 레파지토리
RedisClient를 생성하고 마스터, 복제 서버에 연결합니다.
노드 수만큼 아래과 같은 연결문자열을 만들어서 RedisURI.create(uri) 생성합니다.
uri = "redis://password@ip:port?&clientName=clientName"
Class RedisSentinelRepository - 센티널 레파지토리
- RedisClient를 생성하고 센티널에 연결합니다. 센티널에 연결해서 레디스 정보를 얻어와서 레디스 서버에 연결합니다. 그러므로 레디스 서버의 정보(ip:port)를 제공할 필요가 없습니다.
- 센티널 서버의 password는 설정하지 않는다. 설정하면 센티널에 연결할 수 없습니다. 접속 문자열(redis-sentinel://password)는 레디스 서버의 password를 지정하는 것입니다.
- redisClient.connectSentinel(): 센티널에 접속합니다. 센티널 명령을 실행합니다.
- MasterReplica.connect(): 센티널이 모니터(관리)하는 레디스 서버에 연결합니다. 레디스 명령을 실행합니다.
Class RedisClusterRepository - 클러스터 레파지토리
RedisClusterClient.create(): 레디스 서버에 연결합니다.
Class RedisController
- @GetMapping("/standalone/save/{key}"), @GetMapping("/standalone/get/{key}"): 단독 서버 저장, 조회
- @GetMapping("/standalone/saveAsync/{key}"), @GetMapping("/standalone/getAsync/{key}"): 단독 서버 비동기 저장, 조회
- @GetMapping("/masterReplica/save/{key}"), @GetMapping("/masterReplica/get/{key}"): 마스터-복제 저장, 조회
- @GetMapping("/sentinel/save/{key}"), @GetMapping("/sentinel/get/{key}"): 센티널-레디스 서버 저장, 조회
- @GetMapping("/sentinel/info"): 센티널 서버 info 명령 실행(레디스 서버 아님)
- @GetMapping("/cluster/save/{key}"), @GetMapping("/cluster/get/{key}"): 레디스 클러스터 서버 저장, 조회
<< Spring Multi Data Source | Lettuce Multi Data Source | Spring Project Create >> |
---|
Email
답글이 올라오면 이메일로 알려드리겠습니다.