캐시 무효화
53
投稿した質問数 3
DB부하를 줄이는 전략에서 DB의 데이터 사용자 이름을 변경 할 때, 기존 캐식 삭제 보다 기존 캐시의 JSON 프로필 이름만 수정하는 게 더 비효율적인가요?
기존 캐식 삭제 > 새로운 캐시 생성 VS 기존 캐시의 수정
回答 2
0
안녕하세요. 😊
일반적으로 기존 캐시를 삭제하는 방식이 더 깔끔해서 실무에서 선호하는 방식입니다.
아래와 같은 이유입니다.
기존 캐시 수정 시, GET하고 수정하고 SET 순서로 처리에 따른 원자성 보장 -> 갱신 로직 복잡(삭제에 비해)
사용자 이름이 여러 캐시에 있을 경우 일부 캐시 수정 누락 -> 불일치 가능성
사용자 이름 변경은 빈도가 낮은 이벤트라 캐시 미스 시키고 DB조회로 다시 갱신하는것이 그리 큰 부담이 되지 않는 거 같습니다. 따라서 작업의 단순성과 데이터의 정합성 측면에서 삭제하는 것을 권장드립니다.
그러나 만일 캐시 재생성 비용이 매우 크고 캐시 미스에 따른 속도 저하가 아주 민감한 경우라면 기존 캐시 수정을 고려해 볼 수 있을 거 같습니다.
연휴에도 열심히 하시네요.
화이팅입니다. 👍
0
안녕하세요, 인프런 AI 인턴입니다. rainbow8956님.
질문해 주신 캐시 무효화 전략인 “기존 캐시 삭제 후 새로운 캐시 생성”과 “기존 캐시 수정”에 대한 비교에 대해 설명드리겠습니다.
캐시 무효화 방식 비교:
기존 캐시 삭제 후 새로운 캐시 생성:
- 장점: 단순 명쾌하게 모든 데이터가 최신 상태로 갱신되며, 누락이나 부정확한 데이터 상태가 될 가능성을 줄일 수 있습니다.
- 단점: 새로운 캐시를 생성할 때 DB에 새로운 쿼리를 보내야 하므로, 이는 잠재적으로 추가 부하를 발생시킬 수 있습니다. 대용량 데이터를 다룰 경우 초기 로딩 시간도 영향을 받을 수 있습니다.
- 장점: 단순 명쾌하게 모든 데이터가 최신 상태로 갱신되며, 누락이나 부정확한 데이터 상태가 될 가능성을 줄일 수 있습니다.
기존 캐시의 수정:
- 장점: 일부 데이터를 조정하여 약간의 자원을 절약할 수 있습니다. 특정 변경점만 갱신하므로 데이터 일관성을 유지한 채 최소한의 리소스를 사용합니다.
- 단점: 캐시 데이터의 복잡도에 따라 수정 로직이 복잡해질 수 있으며, 그로 인해 로직 구현 시 오류를 발생시킬 가능성이 있습니다. 잘못된 수정 작업이 누적되면 데이터 불일치 문제가 생길 수 있습니다.
- 장점: 일부 데이터를 조정하여 약간의 자원을 절약할 수 있습니다. 특정 변경점만 갱신하므로 데이터 일관성을 유지한 채 최소한의 리소스를 사용합니다.
어떤 접근법이 더 적합한가?
일반적으로 데이터 구조의 복잡성과 데이터의 변화 빈도를 고려하여 적절한 방법을 선택합니다. 사용자가 자주 변경하지 않는 데이터(예: 사용자 프로필)라면, 캐시의 수정이 유용할 수 있으나, 자주 변하고 대량의 데이터를 다루는 상황에서는 오히려 캐시 삭제 후 재생성이 안전하고 관리가 수월할 수 있습니다.
혹시 유사한 주제로 다른 분들도 토론한 적이 있는지에 대한 정보는 다음과 같은 자료를 참고해 보시면 도움이 됩니다:
- Redis를 이용한 캐싱 전략: Redis를 활용한 다양한 캐싱 방법 및 관련 설정 팁에 대해 확인하실 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
인기 게시판 목록(Sorted set)
0
14
2
테스트 코드 작성 시 DTO 새로 작성하는 이유가 궁금합니다.
0
17
1
kaggle notebook에 service key 설정이 누락된 것 같습니다
1
47
2
주말에 실행할 경우 update_economic_data_in_background에 로직 변경 필요성
1
41
1
프로그램 실행시간에 대한 질문
1
36
2
비중 및 매수 종목수 조정.
1
38
2
운영환경에 적용해볼 수 없을때...고민입니다 ㅠㅠ
0
45
1
Claude api가 소식 동기화가 늦는 문제
1
52
2
슬롯 관련 문의
1
34
2
rabbitmq에 configservice 연결에 대해 질문있습니다.
0
38
1
레디스로 재고 관리
0
58
2
Lock 해제 문의 드립니다.
0
59
2
레디스로 대기큐 구현 질문
0
91
2
API LIMIT
0
63
1
Redis와 Kafca의 Pub/Sub 차이
0
68
2
너무 흥미진진합니다..
1
73
2
순위가 동률일 때의 처리에 대해 질문드립니다.
0
89
2
Redlock 알고리즘 관해 궁금한게 있습니다!
0
107
2
좋아요/조회수 카운팅 병목현상에 대해서 궁금한점이 있습니다.
0
83
2
백엔드 서버 코드 변경에서 프론트엔드 서버가 값을 파싱하지 못하는 문제
0
119
1
강사님 GETDEL 관련해서 질문 있습니다
0
134
2
비밀번호를 걸고 실행된 레디스 서버에 lua 스크립트를 등록하는 경우
0
113
2
보안 설정을 한 수강생들은 Connection Settings에 비밀번호를 넣어야 추가되네요
0
90
2
Redis Container 해킹
0
136
1

