[TIG] Search history WITH Redis (2)

JEONG KI MIN·2024년 7월 25일

TIG

목록 보기
6/12

1편에서는 로컬 환경에서 실행되게 했지만, 우리 서비스는 EC2 를 사용하여 배포를 했으므로 최종적으로는 EC2 환경에서 실행이 되어야 한다.

EC2에 적용하기

일단 EC2 환경에 redis를 다운 받아야 한다.
다운 받는 방법은 구글에 많이 정리 되어 있으니 따로 정리하지는 않겠다. 대신 내가 삽질한 부분을 공유 하고자 한다.

conf 파일 수정

sudo vi /etc/redis/redis.conf
를 통해 redis.conf 파일을 수정해야 한다. 수정해야 할 것은 4개 정도 되는 것 같다.
bind 127.0.0.1 ::1 라고 되어 있는 부분을 본인의 환경에 맞게 bind IPv4 주소 형식으로 고쳐 주어야 한다.

두번째로는 password 설정이다.
requirepass ${password} 부분을 내가 원하는 패스워드로 설정해주어야 한다. 흔하지는 않은 것 같은데 해킹 이슈가 있다고 한다!

추가적으로 나는 다음의 설정을 해주었다.
maxmemory-policy allkeys-lru
메모리가 가득 찼을때 lru 방식으로 메모리를 사용하는 것으로 이해했다.

spring에 적용하기

일단 redis.conf 에서 password 를 설정했기 때문에 spring에서도 이를 설정해주어야 한다.

application.yml

spring:
  data:
    redis:
      port: 6379
      host: ${EC2_PUBLIC_IP}
      password: ${REDIS_PASSWORD}

host 와 password 부분을 바꾸어주면 된다. EC2에 설치 했기 때문에 EC2의 IPv4 주소를 적용해주고 비밀번호도 적용해준다.

RedisConfig

@Configuration
@EnableCaching
public class RedisConfig {

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

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

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

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


    // 검색 로그 템플릿
    @Bean
    public RedisTemplate<String, SearchLog> redisTemplate() {
        RedisTemplate<String, SearchLog> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory());
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<>(SearchLog.class));
        redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(SearchLog.class));

        return redisTemplate;
    }
}

setPassword() 를 통해서 설정했던 password를 적용해준다.

결론

이렇게 설정하면 redis는 EC2에서 백그라운드로 실행되고 외부에서 redis를 사용할 수 있게 된다!

profile
열심히 해볼게요

0개의 댓글