springboot_manual_config
Spring Redis Connection Manual Config
Redis Developer Course | Redis Technical Support | Redis Enterprise Server |
---|
Spring Boot Redis Properties
이 문서는 Spring Boot에서 application.properties or yml을 이용해서 Redis Server에 연결하는 방법을 설명합니다.
레디스 접속 기본 클라이언트 라이브러리로
Spring Boot 1.x에서는 Jedis를 사용하였고, 2.x부터는 Lettuce를 사용합니다.
이 문서에서는 Lettuce를 기준으로 설명합니다.
Spring Redis Properties 관련 공식 문서는 아래 링크를 참고하세요.
- Spring Boot 2.7.14 RedisProperties
spring.redis @ConfigurationProperties(prefix="spring.redis")
- Spring Boot 3.1.3 RedisProperties
spring.data.redis @ConfigurationProperties(prefix="spring.data.redis") - Spring Boot 최신(current) RedisProperties
- Spring Boot RedisProperties.java
- Spring Boot RedisAutoConfiguration.java
- Spring Data Redis
Spring Boot 3.x
application.properties 설정
- Spring Boot 2.x에서는 spring.redis로 시작
- Spring Boot 3.x에서는 spring.data.redis로 시작
이 문서는 Spring Boot 3.x를 기준으로 작성합니다.
[참고] Java 프로젝트 생성, 테스트 방법 등은 위 문서(Auto Config)를 참고하세요.
Manual Configuration 설정 방법
수동(manual)으로 application.properties를 적용하는 방법을 설명합니다.
- Standalone 설정 방법
- Master-Replica 설정 방법 1
- Master-Replica 설정 방법 2
- Sentinel 설정 방법
- Cluster 설정 방법
- Properties 분리 방법
LettuceConnectionFactory Class
LettuceConnectionFactory는 기본적으로 redis configuration과 client configuration으로 구성된다.
Redis configuration은 host(ip), port, password, database 등 서버 구성 관련 속성들이 있다.
Client configuration은 clientName, readFrom 등 클라이언트 관련 속성들이 있다.
LettuceConnectionFactory 클래스에는 다음과 같은 생성자가 있다.
- public LettuceConnectionFactory(RedisConfiguration redisConfiguration, LettuceClientConfiguration clientConfig)
- public LettuceConnectionFactory(RedisStandaloneConfiguration standaloneConfig, LettuceClientConfiguration clientConfig)
- public LettuceConnectionFactory(RedisSentinelConfiguration sentinelConfiguration, LettuceClientConfiguration clientConfig)
- public LettuceConnectionFactory(RedisClusterConfiguration clusterConfiguration, LettuceClientConfiguration clientConfig)
레디스 서버(마스터) 단독 구성일 때는 standaloneConfig를 사용하고,
센티널 구성일 때는 sentinelConfiguration을 사용하고,
클러스터 구성일 때는 clusterConfiguration을 사용한다.
그러면 마스터-복제(replica) 구성일 때는 위 4가지 생성자에는 없지만 RedisStaticMasterReplicaConfiguration을 사용할 수 있다.
이유는 RedisStaticMasterReplicaConfiguration이 redisConfiguration을 implements하므로 가능하다.
테스트 프로그램은 위에서 설명한 StringController.java, StringEntity.java, StringRepository.java를 이용합니다.
수동(manual) 설정에서는 spring.data를 빼고 redis부터 시작하는 것으로 했습니다.
Standalone 설정
항목 설명
redis.database: 데이터베이스를 선택할 수 있습니다. 레디스는 기본으로 0~15까지 16개의 DB를 제공합니다.
redis.clientName: client name을 정할 수 있습니다. client name은 redis-cli에서 client list 명령으로 클라이언트들을 확인할 때
name 항목에 표시되므로 보다 쉽게 클라이언트를 확인할 수 있습니다.
Properties, YML
application.properties
application.yml
Java 소스
RedisInfo1.java: properties, yml에서 항목을 읽어오는 클래스
RedisConfig1.java: 연결(connection)을 구성하는 클래스
Master-Replica 설정 방법 1
항목 설명
redis.replicas:를 replicas[0], replicas[1] 이렇게 배열로 구성했다.
Properties
application.properties
ReadFrom 조회 설정
이것은 client 구성 설정으로 Master-replica, Sentinel, Cluster에 적용된다.
AutoConfiguration에는 이 항목이 없으므로 Manual(수동) 구성으로 해야한다.
권고 설정
- 복제(replica) 노드가 1개 일 때: replicaPreferred 설정 권고: 입력은 마스터에서, 조회는 복제 노드에서 실행된다.
- 복제(replica) 노드가 2개 이상일 때: any 설정 권고: 입력은 마스터에서, 조회는 마스터, 복제 노드들에서 실행된다. 복제 노드가 2개 이상일 때 replicaPreferred를 사용하면 1개 복제 노드에만 집중되는 경향이 있어서 일반적으로 권고하지 않는다. 하지만 마스터의 사용률이 높아서 조회는 복제 노드에 실행하고 싶다면 이것을 선택한다.
- 다른 설정은 복제 노드가 다운되면 에러가 발생하거나, 마스터에 집중되므로 권고하지 않는다.
- 각 값에 대한 자세한 설명은 여기를 클릭하세요.
Java 소스
RedisInfo.java: properties에서 항목을 읽어오는 클래스
Master 정보는 redisInfo.getMaster().getHost() or getPost()로 읽어온다.
Replicas 정보는 redisInfo.getReplicas().forEach(...)로 읽어온다.
RedisConfig.java: 연결(connection)을 구성하는 클래스
Master-Replica 설정 방법 2
항목 설명
redis.master: host:port 방식으로 입력했다.
redis.replicas: host:port, host:port 방식으로 입력했다.
Properties
application.properties
Java 소스
RedisInfo2.java: properties에서 항목을 읽어오는 클래스
RedisConfig2.java: 연결(connection)을 구성하는 클래스
Sentinel 설정 방법
항목 설명
redis.sentinel.nodes: host:port, host:port 방식으로 입력했다.
Properties
application.properties
application.yml
Java 소스
RedisInfo3.java: properties에서 항목을 읽어오는 클래스
RedisConfig3.java: 연결(connection)을 구성하는 클래스
Cluster 설정 방법
항목 설명
redis.master: host:port 방식으로 입력했다.
redis.replicas: host:port, host:port 방식으로 입력했다.
Properties
application.properties
application.yml
Java 소스
RedisInfo4.java: properties에서 항목을 읽어오는 클래스
RedisConfig4.java: 연결(connection)을 구성하는 클래스
Properties 분리 방법
항목 설명
application.properties
spring.profiles.include=redis-standalone
or
spring.profiles.active=redis-standalone
지정한 이름으로 파일을 만든다.
application-redis-standalone.properties
설정은 이 파일에 한다.
Spring Boot Auto Config | Manual Config | Lettuce ReadFrom >> |
---|