생각 캐시와 데이터베이스 일관성

2 년 후,이 블로그를 다시 시작합니다. 친숙한 조금 생소한는 2 년 내 기술 방향 그러므로 이러한 변화는 지금이 블로그에 넣지 마십시오, 극적으로 변화하고있다,하지만 노트를 사용하는 것이 알려져있다. 그 이유는 몇 가지 교류를 가져올 수, 블로그 오픈 일을 중심으로하기 때문에, 블로그를 다시 시작하지만 충돌의 부족을 생각하고, 개인적인 일이 노트. 잡담 덜 시리아, 시작입니다.

 

문제 : 어떻게 캐시 데이터베이스와의 일관성을 유지하기 위해?

 

이 질문에 대답하기 위해, 우리는 먼저 일관성 몇 가지 경우를 봐주세요. 나는 일관성있는 세 가지 경우로 나눌 수 없습니다 :

1. 데이터베이스 데이터, 아니 데이터 캐시;

2. 데이터베이스는, 상기 버퍼에 데이터가 동일하지 않은 데이터를 갖는다;

3. 데이터베이스는 데이터, 캐시 데이터가 없습니다.

 

이 세 가지 사례를 논의하기 전에, 내가 먼저 캐싱 전략의 사용을 설명, 전략은 대부분의 사람들이 사용하는 것입니다, 패턴을 제외하고 캐시했다. 쿨 쉘  캐시 업데이트 루틴  기사 가치 읽기, 내 전략은 그에게서 배운된다.

즉,

읽기 데이터베이스에 참석하지 않을 경우, 데이터는 캐시 및 반환에 기록됩니다; 1. 먼저, 캐시에서 읽으려고, 데이터는 직접 다시 읽습니다.

데이터가 데이터베이스를 업데이트, 업데이트 할 필요가있는 경우 2. 다음 해당 캐시 데이터는 (삭제) 밖으로 실패했습니다.

우리가 이해하기 쉬운 논리 읽기, 업데이트에 대해 이야기. 당신은 내가 언급이 업데이트 방법을하지 않으면, 당신은 방법을 생각했을 그 밖의 무엇을 업데이트 할 수 있습니다? 아마 그것은 다음과 같습니다 캐시를 ​​삭제 한 다음 데이터베이스를 업데이트 할 수 있습니다. 동시에 A, B 두 개의 스레드가 데이터를 업데이트하고, A, B 할 경우, 해당 수행하여 발생하는 문제는 이미 캐시를 삭제하려면이 단계를 수행 한 후, A는 데이터베이스를 업데이트 캐시가 아니기 때문에, C 스레드는 데이터를 읽고 , 데이터베이스 및 업데이트 된 데이터 A, 쓰기 캐시, B 마지막 데이터베이스 업데이트를 확인합니다. 그런 다음 캐시와 데이터베이스의 값이 일치하지 않습니다.

마지막은 왜 당신이 언급 한 방법은 캐시 된 데이터를 삭제하는 경우 또한 어떤 사람들은 업데이트 된 데이터가 캐시에 기록되는 것이 아니라, 요청할 수 있습니다. 문제는 동시 데이터 갱신을하고 A, B 두 스레드 A는 데이터베이스를 업데이트 할 경우,이 때 데이터베이스가 데이터 B를 저장하고, B 후 데이터베이스를 업데이트하므로 일으킨 수행 그리고 캐시를 업데이트 B를 때 캐시를 업데이트 캐시는 후 캐시가있는 데이터를 업데이트됩니다. 이러한 데이터는 캐시와 데이터베이스도 일치하지 않습니다.

이 업데이트 내가 언급 캐시 전략에 따르면, 또한 이론적으로 일관성이 위험에 언급 된 문서의 시원한 쉘이 있지만, 확률은 우리가 해결하기 위해 다른 수단이 뒤에 우리는 존재를 고려하지 수, 매우 작습니다.

 

캐싱 전략의 사용을 논의 후, 우리는이 세 가지 일관성 봐.

데이터를 읽을 때 첫 번째의 경우 1. 데이터가 자동으로 데이터베이스 캐시에 기록되므로 자동으로 불일치를 제거한다

두 번째 2. 최종 데이터는 불평등하게,하지만 특정 시간에 그들은 방법은 동일해야합니다 지적하기 전에 (또는 그 순간 캐시로드에서 미리로드 지연로드를 사용하여 무엇이든, 그것은 확실히 데이터베이스 일치). 이러한 불일치, 당신은 발생하는 데이터를 업데이트해야하기 때문에. 앞서 우리는 데이터베이스를 업데이트 한 다음 캐시를 삭제, 전략 업데이트 데이터에 대해 이야기했다. 따라서, 불일치의 이유는, 데이터베이스 업데이트,하지만 실패 캐시를 삭제해야합니다.

3. 세 번째와 두 번째 유사한 경우를 들어, 데이터베이스의 데이터가 삭제하지만 캐시가 실패했을 때 삭제했습니다.

따라서, 최종 결론은 성공의 원인을 해결하기 위해 일관성이 필요 데이터베이스를 업데이트하는 것입니다,하지만 삭제 된 캐시 미스입니다.

 

나는 다음에 대한 해결책을했다 :

일관성 요구 사항 1. 캐시 데이터를 다시 시도 삭제 높을수록 나는 빨리 다시 시도하십시오.

2. 정기적으로 전액, 간단하게, 내가 정기적으로 모든 캐시를 멀리 웠음 후 전액이로드를 업데이트합니다.

3. 캐시의 유효 기간을 모두 부여합니다.

세 번째 옵션은 일관성이 높을수록, 유효 기간이 짧은 데이터의 일관성, 만기일에 의해 해결 될 수, 큰 죽일 수있다. 그러나 짧은은 유효 기간이 확인 데이터베이스가 더 자주있을 것입니다. 따라서 유효 기간은 서비스에 따라 설정해야합니다.

 

:에서 재판 https://www.cnblogs.com/johnsblog/p/6426287.html

추천

출처www.cnblogs.com/bingidan/p/11757454.html