Spring Redis Connection Manual Config

레디스 개발자 교육 신청 레디스 정기점검/기술지원
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 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를 적용하는 방법을 설명합니다.

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 >>

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