개발

[Redis] Spring Boot에서 Redis 캐싱

yun000 2025. 4. 19. 20:58

🍏 redis 설치

1️⃣ Redis 서버 설치

https://yun000.tistory.com/301

 

[Redis] Window에 Reids 설치

1️⃣ 설치 아래의 링크에서 Redis-x64-3.0.504.msi를 다운받는다https://github.com/microsoftarchive/redis/releases Releases · microsoftarchive/redisRedis is an in-memory database that persists on disk. The data model is key-value, but many d

yun000.tistory.com

 

 

🍏 Spring Boot에서 Redis 설정

🔹 1. Redis 의존성 추가 (pom.xml)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

🔹 2. application.properties 설정

# Redis 서버 주소
spring.data.redis.host=localhost
spring.data.redis.port=6379
spring.data.redis.timeout=6000
spring.cache.type=redis # 캐시 저장소 - Redis 사용

+) Docker에서 실행할 경우 spring.redis.host 변경

🔹 3. RedisConfig.java 설정

@Configuration
@EnableCaching  // Spring Caching 기능 활성화
public class RedisConfig {

    @Bean
    public RedisConnectionFactory redisConnectionFactory() {
        return new LettuceConnectionFactory();
    }
	
	// RedisTemaplte = Redis에 데이터 저장, 조회하기 위한 설정
    @Bean
    public RedisTemplate<String, Object> redisTemplate() {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(redisConnectionFactory());
        template.setKeySerializer(new StringRedisSerializer());
        template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        return template;
    }
}

 

 

🍏 Redis 캐싱 적용

🔹 1. @Cacheable (조회 캐싱)

=처음 호출 할 때는 DB에서 조회 → 이후 Redis에서 가져옴 (성능 향상!)

@Service
public class BookService {

    @Autowired
    private IBookRepository bookRepository;

    @Cacheable(value = "books", key = "#id")  // Redis에 저장
    public Book getBookById(Long id) {
        System.out.println("DB에서 조회: " + id);
        return bookRepository.findById(id).orElse(null);
    }
}

🔹 2. @CachePut (업데이트 시 캐시 갱신)

= DB 업데이트와 동시에 Redis 캐시 갱신

@CachePut(value = "books", key = "#book.id")
public Book updateBook(Book book) {
    return bookRepository.save(book);
}

🔹 3. @CacheEvict (캐시 삭제)

= DB에서 삭제 시 Redis 캐시도 자동 삭제

@CacheEvict(value = "books", key = "#id")
public void deleteBook(Long id) {
    bookRepository.deleteById(id);
}

 

🍏  Redis 캐시 데이터 적용 확인

저장된 모든 캐시 키 확인

keys *

캐시 데이터 조회

get books::1  # 특정 key 데이터 확인

Redis 캐시 전체 삭제

flushall  # 전체 캐시 삭제