상세 컨텐츠

본문 제목

Redis 캐싱에서 DB와의 원자성을 확보하는 법

기술공부/Redis

by helpilsang 2025. 12. 1. 16:52

본문

Redis를 사용하며 생각할것들이 많아진다

TTL 설정은 어떻게할것인가
애초에 캐싱처리한다는것 자체가 DB와 원자성이 보장되지않잖아 그럼 어떻게 그 간극을 맞출것인가에 대한 의문

그래서 Redis의 캐싱처리를 할때에는 보통 실시간성이 없는 데이터 
추천검색어, 상품 정보, 사용자프로필, 설정값등등...보통 많이 바뀌지않는데이터

그래도 바뀔염려가 있잖아

그떄는 

@CacheEvict(value = "products", key = "'all'")
public Product createProduct(Product product) {
    return productRepository.save(product);
}

@CacheEvict(value = "products", allEntries = true)
public void deleteProduct(Long id) {
    productRepository.deleteById(id);
}

이렇게 저장되는 요소가 있을경우 캐시무효화를 실행해주게 중요해
만약 프로필이 변경됐다 하면 캐시무효화를 통해 다시 db에서 조회하도록 하면 원자성에 문제가 없겠지?

@CacheEvict = 캐시삭제
@CachePut = 캐시 강제 갱신

전체조회에선 캐시를 삭제하고 다시 넣는게 맞고
단일조회 (id = 조건) 이런값일때는 캐시 생신을 통해서 넣는 게 맞음

 

'기술공부 > Redis' 카테고리의 다른 글

Springboot에서의 Redis Cache 활용 방법  (0) 2025.12.01
Redis 캐시 저장방식, 제거방식  (0) 2025.12.01
Redis 활용  (0) 2025.11.28
Redis란  (0) 2025.11.28

관련글 더보기