캐시 무효화
46
投稿した質問数 3
DB부하를 줄이는 전략에서 DB의 데이터 사용자 이름을 변경 할 때, 기존 캐식 삭제 보다 기존 캐시의 JSON 프로필 이름만 수정하는 게 더 비효율적인가요?
기존 캐식 삭제 > 새로운 캐시 생성 VS 기존 캐시의 수정
回答 2
0
안녕하세요. 😊
일반적으로 기존 캐시를 삭제하는 방식이 더 깔끔해서 실무에서 선호하는 방식입니다.
아래와 같은 이유입니다.
기존 캐시 수정 시, GET하고 수정하고 SET 순서로 처리에 따른 원자성 보장 -> 갱신 로직 복잡(삭제에 비해)
사용자 이름이 여러 캐시에 있을 경우 일부 캐시 수정 누락 -> 불일치 가능성
사용자 이름 변경은 빈도가 낮은 이벤트라 캐시 미스 시키고 DB조회로 다시 갱신하는것이 그리 큰 부담이 되지 않는 거 같습니다. 따라서 작업의 단순성과 데이터의 정합성 측면에서 삭제하는 것을 권장드립니다.
그러나 만일 캐시 재생성 비용이 매우 크고 캐시 미스에 따른 속도 저하가 아주 민감한 경우라면 기존 캐시 수정을 고려해 볼 수 있을 거 같습니다.
연휴에도 열심히 하시네요.
화이팅입니다. 👍
0
안녕하세요, 인프런 AI 인턴입니다. rainbow8956님.
질문해 주신 캐시 무효화 전략인 “기존 캐시 삭제 후 새로운 캐시 생성”과 “기존 캐시 수정”에 대한 비교에 대해 설명드리겠습니다.
캐시 무효화 방식 비교:
기존 캐시 삭제 후 새로운 캐시 생성:
- 장점: 단순 명쾌하게 모든 데이터가 최신 상태로 갱신되며, 누락이나 부정확한 데이터 상태가 될 가능성을 줄일 수 있습니다.
- 단점: 새로운 캐시를 생성할 때 DB에 새로운 쿼리를 보내야 하므로, 이는 잠재적으로 추가 부하를 발생시킬 수 있습니다. 대용량 데이터를 다룰 경우 초기 로딩 시간도 영향을 받을 수 있습니다.
- 장점: 단순 명쾌하게 모든 데이터가 최신 상태로 갱신되며, 누락이나 부정확한 데이터 상태가 될 가능성을 줄일 수 있습니다.
기존 캐시의 수정:
- 장점: 일부 데이터를 조정하여 약간의 자원을 절약할 수 있습니다. 특정 변경점만 갱신하므로 데이터 일관성을 유지한 채 최소한의 리소스를 사용합니다.
- 단점: 캐시 데이터의 복잡도에 따라 수정 로직이 복잡해질 수 있으며, 그로 인해 로직 구현 시 오류를 발생시킬 가능성이 있습니다. 잘못된 수정 작업이 누적되면 데이터 불일치 문제가 생길 수 있습니다.
- 장점: 일부 데이터를 조정하여 약간의 자원을 절약할 수 있습니다. 특정 변경점만 갱신하므로 데이터 일관성을 유지한 채 최소한의 리소스를 사용합니다.
어떤 접근법이 더 적합한가?
일반적으로 데이터 구조의 복잡성과 데이터의 변화 빈도를 고려하여 적절한 방법을 선택합니다. 사용자가 자주 변경하지 않는 데이터(예: 사용자 프로필)라면, 캐시의 수정이 유용할 수 있으나, 자주 변하고 대량의 데이터를 다루는 상황에서는 오히려 캐시 삭제 후 재생성이 안전하고 관리가 수월할 수 있습니다.
혹시 유사한 주제로 다른 분들도 토론한 적이 있는지에 대한 정보는 다음과 같은 자료를 참고해 보시면 도움이 됩니다:
- Redis를 이용한 캐싱 전략: Redis를 활용한 다양한 캐싱 방법 및 관련 설정 팁에 대해 확인하실 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
Cursor 실행 문의
0
6
1
15강 12-3) 값 제출후 mysql 저장이 안됩니다.
0
10
2
슬랙에서 메시지 일부 잘림
1
23
2
Nat Gateway
0
24
2
API 오류: EGW00201 - 초당 거래건수를 초과
1
30
2
캐글 save version 할 시 md파일과 다름.
1
28
2
FRED API
1
34
1
제가 AWS 에 배포했는데
1
34
1
갑자기 stock_prediction은 어디서 발생한건가요?
1
40
2
pipeline/run-buy-pipeline 실행시 "LLM호출전체실패"에러발생
1
30
2
레디스로 재고 관리
0
40
2
Lock 해제 문의 드립니다.
0
44
2
레디스로 대기큐 구현 질문
0
76
2
API LIMIT
0
54
1
Redis와 Kafca의 Pub/Sub 차이
0
60
2
너무 흥미진진합니다..
1
61
2
순위가 동률일 때의 처리에 대해 질문드립니다.
0
73
2
Redlock 알고리즘 관해 궁금한게 있습니다!
0
96
2
좋아요/조회수 카운팅 병목현상에 대해서 궁금한점이 있습니다.
0
69
2
백엔드 서버 코드 변경에서 프론트엔드 서버가 값을 파싱하지 못하는 문제
0
114
1
강사님 GETDEL 관련해서 질문 있습니다
0
123
2
비밀번호를 걸고 실행된 레디스 서버에 lua 스크립트를 등록하는 경우
0
105
2
보안 설정을 한 수강생들은 Connection Settings에 비밀번호를 넣어야 추가되네요
0
83
2
Redis Container 해킹
0
133
1

