본문 바로가기

좋아하는 것_매직IT/9.redis

Spring Boot에서 Redis 캐시 매니저를 사용하여 MySQL 데이터베이스 변경 시 실시간으로 적용하는방법

반응형

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
728x90

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);
    }
}
``
728x90

이제까지 Spring Boot에서 Redis 캐시 매니저를 사용하여 MySQL 데이터베이스 변경 시 실시간으로 적용하는방법에 대해서 정리해보았고요...

항상 믿고 봐주셔서 감사합니다. 

다음에도 더 좋은 컨텐츠와 내용으로 찾아뵐께요~

728x90
300x250