본문 바로가기

AWS

[AWS] 아주 쉽게 AWS ElastiCache 도입하여 spring 에서 redis 기능 구현

'AWS로 구현하는 MAS와 컨테이너 오캐스트레이션' 강의를

블로그를 통해 구매하시는 분들에게만 10%할인 중입니다.

이미지를 클릭하고, 아래 쿠폰번호를 입력해 주세요!

16861-259843d6c2d7


 

aws elastiCache redis + spring/kotlin

 

aws elastiCache 콘솔 화면에서 redis탭의 생성 버튼으로 redis 메모리 생성 진행
 
 
 

 
* 클러스터 모드 - 클러스터 모드를 활성화하면 샤드를 추가 가능하다. 샤드를 추가하면 샤딩 방식에 따라 메모리에 저장되는 데이터를 특정 집단으로 분리하여 저장하므로 워크로드를 분산(성능 개선)한다.
 
샤딩 - 메모리에 데이터를 분리하여 저장하는 방식
 
 
elastiCache redis의 샤딩기법 - 모든 캐시 키가 해시 슬롯에 매핑되는 방식으로 샤딩을 활용. 1개의 클러스터는 16,384개의 슬롯을 사용할 수 있고 클러스터 내 총 샤드에 균등하게 배포
 
 

 
 
포트 - 일반적으로 redis는 6379 포트 사용 (건들지 말자)
샤드 수 - 분산시킬 파티션 개수
샤드당 복제본 - 샤드의 replication 할 개수 권장은 2개지만 개수가 많아질 수록 요금이 기하급수적으로 올라감
* 샤드 3 샤드당 복제본 2 일 경우 총 9개의 노드로 9배의 요금이 부과됨
다중 az - elastiCache의 경우 샤드당 복제본을 1개 이상 설정 시 자동으로 활성화 되는듯
 
 

 
 
슬롯 및 키스페이스 - 균등배포는 aws의 권장 샤딩이고 사용자 지정으로 슬롯 및 키스페이스를 지정 가능 (웬만해선 균등 배포)
 
 
 

 
 
그 외 보안 등 설정 후 생성완료
 
 

 
 
 

ec2에서 접근 가능하도록 보안 그룹 설정

 
 

 

 

ssh 와 redis 접속 포트 오픈

ec2에 redis사용 환경 설정
 
linux-ubuntu 기준
apt-get install redis-tools 명령어를 통해 redis 관련 툴을 다운
 

redis-cli -c -h hitup-redis.ooooo.clustercfg.apn2.cache.amazonaws.com -p 6379
hitup-redis.ooooo.clustercfg.apn2.cache.amazonaws.com:6379> 

redis 접속 확인
 
 

spring Dependencies 추가

implementation("org.springframework.boot:spring-boot-starter-data-redis")
implementation("redis.clients:jedis:3.3.0"
 

spring yaml 파일에 redis 환경 추가

spring:
    datasource:
        redis:
            host: ooo-redis.oooooo.clustercfg.apn2.cache.amazonaws.com
            port6379

spring redis Configuration 클래스 작성

 

@EnableRedisRepositories
@Configuration
class RedisConfiguration {
  @Value("\${spring.redis.host}")
  lateinit var redisHost: String

  @Value("\${spring.redis.port}")
  var redisPort: Int = 0

  @Bean
  fun redisClusterConfiguration(): RedisClusterConfiguration? {
    val clusterConfiguration = RedisClusterConfiguration()
    clusterConfiguration.clusterNode(redisHost, redisPort)
    LettuceConnectionFactory(clusterConfiguration)
    return clusterConfiguration
  }
}

 
빈 등록 이후 redis service 및 redis repository 작성하여 연동