SpringBoot와 Redis 연결 방법

이재원·2023년 7월 16일
1

springboot

목록 보기
1/1
post-thumbnail

스프링부트 3에서 비밀번호가 설정된 Redis 저장소 연결을 위한 방법을 찾던 중, 이를 설정하는 방법을 정리해보았습니다.
Redis client로는 Lettuce를 사용했습니다. Lettuce는 아래의 redis 의존성에 포함되어 있습니다.


연결 실패 에러

Unable to connect to redis

설정 방법

build.gradle

implementation 'org.springframework.boot:spring-boot-starter-data-redis'

application.yml

spring:
  data:
    redis:
      host: 호스트 이름
      port: 포트 번호
      url: jdbc:redis://유저네임:비밀번호@호스트 이름:포트번호
      password: 비밀번호

RedisConfig.java

@Configuration
public class RedisConfig {

    @Value("${spring.data.redis.host}")
    private String host;

    @Value("${spring.data.redis.port}")
    private int port;

    @Value("${spring.data.redis.password}")
    private String password;

    @Bean
    public RedisConnectionFactory redisConnectionFactory() {
        RedisStandaloneConfiguration config = new RedisStandaloneConfiguration(host, port);
        config.setPassword(password);
        return new LettuceConnectionFactory(config);
    }
}

비밀번호가 있는 경우, setPassword 메소드를 사용해서 비밀번호를 설정할 수 있습니다.

테스트

public interface TestEntityRepository extends CrudRepository<TestEntity, String> {
}

redis 저장소와의 연결을 테스트하기 위해서 repository를 생성했고, 값 저장과 읽어오기를 통해 테스트가 성공함을 볼 수 있었습니다.


username은?

인증 관련 문서를 보면, 레디스는 username도 설정이 가능하다고 되어 있습니다. 하지만 기본적으로 password로 인증하기 때문에 이러한 부분은 redis 서버를 설정하기 나름일것입니다.

Redis 저장소를 사용하는 이유?

기본적으로 redis는 캐시처럼 빠른 접근을 위해 사용하기 위해 쓰인다고 이해하고 있었습니다.
그렇지만 일반적인 메모리와 달리 redis 서비스의 통신 과정에서의 오버헤드에도 불구하고 인메모리 데이터베이스를 사용하는 이점에 대해 추가적으로 조사해보았습니다.

  • 단순한 캐시가 아니라 Redis는 필요한 경우 디스크에 데이터를 유지할 수 있다.
  • Sharding(데이터 분산 저장), Replication(복제)이 가능하여 데이터 관리 효율이 높다.
  • 원격 Cache Server를 사용하기 떄문에 서버간 데이터 공유가 쉽다.
  • Redis는 마스터/슬레이브 복제 메커니즘을 사용하여 고가용성을 구현할 수 있다.

참고

https://redis.io/commands/auth
https://stackoverflow.com/questions/19477821/redis-cache-vs-using-memory-directly

profile
안녕하세요

2개의 댓글

comment-user-thumbnail
2023년 7월 16일

잘봤습니다.

답글 달기
comment-user-thumbnail
2023년 7월 17일

저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!

답글 달기