AWS ElastiCache Redis 구성 팁

ElastiCache Redis을 실제로 사용했을 때, 유용하게 사용할 법한 팁들을 공유해보려고 합니다.

ElastiCache Redis Cluster Automatic Failover

복제본 개수가 1개 이상일 경우 다중 AZ를 꼭 활성화해서 생성해야 장애시 자동 장애조치를 수행할 수 있습니다.

실제로 자동장애조치가 잘 동작하는지 보고 싶으면, ElastiCache Redis 노드 관리 화면에서 작업-기본 장애 조치를 수행하여 볼 수 있습니다.

Optional Cache

캐시 기능을 ON/OFF 하기 위해서 아래와 같이 구현할 수 있습니다. 사용하지 않을때는 NoOpCacheManager를 이용해 캐싱을 쉽게 비활성화 할 수 있습니다.

@Override @Bean public CacheManager cacheManager() { if (StringUtils.equals(redisUse, "Y")) { return new RedisCacheManager(redisTemplate()); } else { return new NoOpCacheManager(); } }
Code language: PHP (php)

Serialization, Deserialization

기본적으로 직렬화하지 않고 저장하게 되면 Redis에서 직접 데이터를 조회할 경우 데이터를 알아보기 힘듭니다. GenericJackson2JsonRedisSerializer를 이용하면 객체를 자동으로 json형태로 직렬화해서 저장해주기 때문에 아래와 같이 사용해 봅시다.

@Bean public RedisTemplate<String, Object> redisTemplate() { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>(); redisTemplate.setConnectionFactory(jedisConnectionFactory()); redisTemplate.setKeySerializer(new GenericJackson2JsonRedisSerializer()); redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); return redisTemplate; }
Code language: JavaScript (javascript)

json 형태로 직렬화된 데이터는 실제로 아래와 같이 저장됩니다.

{"@class":"com.model.simpleModel","Status":"OK", "Data":{"@class":"com.model.summaryModel", "summary":null,"list":["java.util.ArrayList"...] ...} }
Code language: JSON / JSON with Comments (json)

Leave a Reply

Your email address will not be published. Required fields are marked *