Redis는 In-Memory 데이터 구조 저장소로서, 메모리 상에 데이터를 저장하므로 데이터베이스 변경이 실시간으로 적용됩니다. 그러나 Redis는 일반적으로 디스크에 데이터를 저장하지 않으므로, Redis 서버를 재시작하거나 큰 메모리 문제가 발생할 경우에는 데이터가 손실될 수 있습니다.
Redis의 캐시 매니저는 보통 Redis의 Key-Value 구조를 이용하여 캐시를 관리합니다. 이 때, Redis의 데이터를 변경할 때마다 캐시를 업데이트하고자 한다면 아래 방법대로 한번 해보시면 좋겠네요~
그럼 설명을 시작해보도록 할께요~
Spring Boot에서 Redis 캐시 매니저를 사용하여 MySQL 데이터베이스 변경 시 실시간으로 적용하고자 한다면, 다음과 같은 코드를 작성할 수 있습니다.
1.Redis 설정 파일 생성 먼저, Redis 서버에 대한 설정 정보를 application.properties 파일에 작성합니다.
spring.redis.host=localhost
spring.redis.port=6379
2.Redis Template Bean 생성 Redis Template은 Spring Boot에서 Redis를 사용하기 위한 핵심 클래스 중 하나입니다. 이를 이용하여 Redis 서버와 통신할 수 있습니다. 따라서 Redis Template을 Bean으로 등록하고, 데이터베이스 변경 시 Redis 서버와 캐시를 업데이트합니다.
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new StringRedisSerializer());
return redisTemplate;
}
}
위 코드에서는 redisTemplate() 메소드를 통해 RedisTemplate을 생성하고, Redis 서버와 통신할 수 있도록 RedisConnectionFactory를 전달합니다. 또한, Key와 Value를 String 타입으로 직렬화하여 저장할 수 있도록 Serializer를 등록합니다.
3.데이터베이스 변경 시 캐시 업데이트 RedisTemplate을 이용하여 Redis 서버와 통신하고, 데이터베이스 변경 시 캐시를 업데이트하는 코드를 작성합니다.
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
@Component
public class CacheManager {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
public void updateCache(String key, String value) {
redisTemplate.opsForValue().set(key, value);
}
}
위 코드에서는 RedisTemplate을 @Autowired 어노테이션을 이용하여 주입합니다. 이후 updateCache() 메소드를 이용하여 RedisTemplate을 이용하여 Redis 서버와 통신하고, 데이터베이스 변경 시 캐시를 업데이트합니다.
4.데이터베이스 변경 시 CacheManager 사용 MySQL 데이터베이스를 변경하는 서비스에서는 CacheManager를 이용하여 데이터베이스 변경 시 캐시를 업데이트합니다.
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class ExampleService {
@Autowired
private CacheManager cacheManager;
@Autowired
private ExampleRepository exampleRepository;
public void updateDatabase(String key, String value) {
// 데이터베이스 변경 로직
Example example = exampleRepository.findByKey(key);
example.setValue(value);
exampleRepository.save(example);
// 캐시 업데이트
cacheManager.updateCache(key, value);
}
}
``
이제까지 Spring Boot에서 Redis 캐시 매니저를 사용하여 MySQL 데이터베이스 변경 시 실시간으로 적용하는방법에 대해서 정리해보았고요...
항상 믿고 봐주셔서 감사합니다.
다음에도 더 좋은 컨텐츠와 내용으로 찾아뵐께요~
'좋아하는 것_매직IT > 9.redis' 카테고리의 다른 글
35.Redis, 레디스에서 루아(Lua) 스크립트를 한번 실행해 볼까요? (0) | 2021.01.15 |
---|---|
34.Redis, 레디스의 AOF(Append Only File)에 대해서 알아보자구요! ^^ (0) | 2021.01.15 |
33.Redis, 레디스의 스냅샷에 대해서 알아보자구요! ^^ (0) | 2021.01.15 |
32.Redis, 레디스 설정(redis.conf) 에 대해서 알아보자구요.^^ (0) | 2021.01.15 |
31.Redis, 운영 시 메모리 설정은 어떻게 해야 할까요? (0) | 2021.01.15 |