inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

2026년! 백엔드 개발자를 위한 Redis 실전 가이드: 기초부터 실무 패턴까지

패턴 01: 캐싱(Cache-Aside) - DB부하를 줄이는 전략

캐시 무효화

46

rainbow8956

작성한 질문수 3

0

DB부하를 줄이는 전략에서 DB의 데이터 사용자 이름을 변경 할 때, 기존 캐식 삭제 보다 기존 캐시의 JSON 프로필 이름만 수정하는 게 더 비효율적인가요?

 

기존 캐식 삭제 > 새로운 캐시 생성 VS 기존 캐시의 수정

아키텍처 redis FastAPI

답변 2

0

코딩하는기술사

안녕하세요. 😊
일반적으로 기존 캐시를 삭제하는 방식이 더 깔끔해서 실무에서 선호하는 방식입니다.

아래와 같은 이유입니다.

  1. 기존 캐시 수정 시, GET하고 수정하고 SET 순서로 처리에 따른 원자성 보장 -> 갱신 로직 복잡(삭제에 비해)

     

  2. 사용자 이름이 여러 캐시에 있을 경우 일부 캐시 수정 누락 -> 불일치 가능성

     

사용자 이름 변경은 빈도가 낮은 이벤트라 캐시 미스 시키고 DB조회로 다시 갱신하는것이 그리 큰 부담이 되지 않는 거 같습니다. 따라서 작업의 단순성과 데이터의 정합성 측면에서 삭제하는 것을 권장드립니다.

그러나 만일 캐시 재생성 비용이 매우 크고 캐시 미스에 따른 속도 저하가 아주 민감한 경우라면 기존 캐시 수정을 고려해 볼 수 있을 거 같습니다.

 

연휴에도 열심히 하시네요.

화이팅입니다. 👍

1

rainbow8956

명강의 감사합니다!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. rainbow8956님.

질문해 주신 캐시 무효화 전략인 “기존 캐시 삭제 후 새로운 캐시 생성”과 “기존 캐시 수정”에 대한 비교에 대해 설명드리겠습니다.

캐시 무효화 방식 비교:

  1. 기존 캐시 삭제 후 새로운 캐시 생성:

    • 장점: 단순 명쾌하게 모든 데이터가 최신 상태로 갱신되며, 누락이나 부정확한 데이터 상태가 될 가능성을 줄일 수 있습니다.
    • 단점: 새로운 캐시를 생성할 때 DB에 새로운 쿼리를 보내야 하므로, 이는 잠재적으로 추가 부하를 발생시킬 수 있습니다. 대용량 데이터를 다룰 경우 초기 로딩 시간도 영향을 받을 수 있습니다.
  2. 기존 캐시의 수정:

    • 장점: 일부 데이터를 조정하여 약간의 자원을 절약할 수 있습니다. 특정 변경점만 갱신하므로 데이터 일관성을 유지한 채 최소한의 리소스를 사용합니다.
    • 단점: 캐시 데이터의 복잡도에 따라 수정 로직이 복잡해질 수 있으며, 그로 인해 로직 구현 시 오류를 발생시킬 가능성이 있습니다. 잘못된 수정 작업이 누적되면 데이터 불일치 문제가 생길 수 있습니다.

어떤 접근법이 더 적합한가?

일반적으로 데이터 구조의 복잡성데이터의 변화 빈도를 고려하여 적절한 방법을 선택합니다. 사용자가 자주 변경하지 않는 데이터(예: 사용자 프로필)라면, 캐시의 수정이 유용할 수 있으나, 자주 변하고 대량의 데이터를 다루는 상황에서는 오히려 캐시 삭제 후 재생성이 안전하고 관리가 수월할 수 있습니다.

혹시 유사한 주제로 다른 분들도 토론한 적이 있는지에 대한 정보는 다음과 같은 자료를 참고해 보시면 도움이 됩니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

슬롯 관련 문의

1

10

2

rabbitmq에 configservice 연결에 대해 질문있습니다.

0

15

1

실제 계좌 잔고 및 테스트중에

1

29

4

Int 값들 null 처리

0

14

1

db table 관련질문

0

16

1

현업에서 prisma relationMode는 사용안하나요?

0

23

1

안녕하세요

1

38

3

유튜브 시연 영상 추가 기능 강의 업로드 계획

0

17

1

매일 사용시 토큰사용량

1

46

2

LLM판단에 문제가 있는 것 같습니다

1

41

2

레디스로 재고 관리

0

44

2

Lock 해제 문의 드립니다.

0

45

2

레디스로 대기큐 구현 질문

0

79

2

API LIMIT

0

55

1

Redis와 Kafca의 Pub/Sub 차이

0

61

2

너무 흥미진진합니다..

1

63

2

순위가 동률일 때의 처리에 대해 질문드립니다.

0

76

2

Redlock 알고리즘 관해 궁금한게 있습니다!

0

98

2

좋아요/조회수 카운팅 병목현상에 대해서 궁금한점이 있습니다.

0

70

2

백엔드 서버 코드 변경에서 프론트엔드 서버가 값을 파싱하지 못하는 문제

0

117

1

강사님 GETDEL 관련해서 질문 있습니다

0

130

2

비밀번호를 걸고 실행된 레디스 서버에 lua 스크립트를 등록하는 경우

0

108

2

보안 설정을 한 수강생들은 Connection Settings에 비밀번호를 넣어야 추가되네요

0

87

2

Redis Container 해킹

0

134

1