[Stupid Record] REDIS lettuceConnectionFactory 비밀번호 설정

RD·2022년 11월 11일
1

Stupid Record

목록 보기
2/3

최근 개발하고 있는 사이드 프로젝트에서는 Login Token 관리를 위해 redis를 사용 중이다.

회사에서 하는 프로젝트에서도 전에 redis에 login 안걸고 있다가 데이터 홀랑 날려먹은 적이 있었다.
그때는 아마 악질 크롤링 그런거였던 것 같은데 redis 기본 포트가 6379니까 그냥 드롭시켜버리는 덕분에 비밀번호의 소중함을 알게 됐는지 어쨌는지.

아무튼, 그 덕에 redis라면 꼭 비밀번호를 설정한다는 마음으로 살고 있는데, 최근 작업 중이던 사이드에서도 redis 설정을 좀 잡아주려고 비밀번호를 설정하고, application.yml에도 잘 반영해줬다.


근데 우리집 REDIS가 무너진거에요

이상하게도 password 설정을 해주자 마자부터 서비스가 redis를 못잡기 시작했던 것임 몬가 몬가임

아니 회사에서 작업했을 때는 그냥 알잘딱하게 돌던데? yml에만 넣어주면 돌던데? 너 뭔데? 대체 왜그러는데?
하는 수많은 의문을 남기고 열심히 redis를 찾아보았다.

열심히 뒤져본 결과 차이를 발견할 수 있었는데,
기존에 작업했던 애는 StringRedisTemplate을 사용하고 있었고,

private final JwtTokenProvider jwtTokenProvider;

    private final StringRedisTemplate redisTemplate;

    @Override
    public void configure(HttpSecurity http) throws Exception {
        JwtAuthenticationFilter customFilter = new JwtAuthenticationFilter(jwtTokenProvider,redisTemplate);
        http.addFilterBefore(customFilter, UsernamePasswordAuthenticationFilter.class);
    }

새로 작업하던 애는 lettuceConnectionFactory를 사용하고 있
었던 것! 두둥

 private final RedisProperties redisProperties;

    @Bean
    public RedisConnectionFactory redisConnectionFactory() {
        return new LettuceConnectionFactory(redisProperties.getHost(), redisProperties.getPort());
    }

곰곰히 읽다 보니까, 이전에는 개별적으로 설정을 주입해준 적이 없는 것 같은데, lettuceConnectionFactory를 선언하면서 redisproperties에서 정보를 가져다가 넣길래 얘다 싶었다. 아니 패스워드를 안넣잖아 그냥 싸가지업게 아주

그래서 아무튼 모시깽하게 이유를 파악한 후 redis 설정을 지금은 아예 통 크게 뜯어고쳤는데 나 말고 동료가

요새는 권장하지 않는 것 같던데, 아무튼 찾아온 사람이 있다면 패스워드를 설정하는 방법은 이렇다.

public RedisConnectionFactory redisConnectionFactory() {
        LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory();
        lettuceConnectionFactory.setHostName(redisProperties.getHost());
        lettuceConnectionFactory.setPort(redisProperties.getPort());
        lettuceConnectionFactory.setPassword(redisProperties.getPassword());
        return lettuceConnectionFactory;
    }

짜잔 참 쉽죠? 그냥 만들고! 그냥 넣어!

아무튼 똑똑하신 양반들께서 요새는 이렇게 따로 세터 안쓰는 데는 이유가 있겠지... 나야 뭐 그런 거 까지는 잘 모르구...
그냥 주는거 잘 쓰면 되는거 아니겠냐구

지금은 RedisStandaloneConfiguration으로 잘 쓰고 있다.
근데 여기다가 그냥 세터 갈겨서 뭔 차이인 지는 잘 모르겠음

@Bean
    public RedisConnectionFactory redisConnectionFactory() {
        RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
        redisStandaloneConfiguration.setHostName(redisProperties.getHost());
        redisStandaloneConfiguration.setPort(redisProperties.getPort());
        redisStandaloneConfiguration.setPassword(redisProperties.getPassword());
        return new LettuceConnectionFactory(redisStandaloneConfiguration);
    }

그냥 좋아진 셈 치자 config 만들어서 넣으니까.

끗!

profile
놀고먹고싶어요

0개의 댓글