데이터를 업데이트할 때 분산 트랜잭션 문제가 발생하여 캐시 업데이트는 성공하지만 데이터베이스 수정은 실패할 수 있습니다. 데이터베이스 수정이 실패하고 캐시만 삭제되더라도 다음 쿼리는 여전히 데이터베이스에서 직접 데이터를 가져오며 더티 데이터는 생성되지 않습니다.
즉, 엔터티 클래스를 추가, 삭제, 수정하는 경우 해당 엔터티 클래스의 캐시를 삭제해야 합니다. 삭제 위치는 데이터베이스 작업 방법 전과 후입니다.
먼저 삭제만
나중에 삭제만
따라서 삭제 전, 삭제 후 모두 문제가 있다는 결론을 내릴 수 있습니다. 따라서 지연 이중 삭제 전략이 채택됩니다
아직도 모순에 의한 증거입니다. 아래 그림의 상황은 이중 삭제 후에도 이전 캐시가 여전히 존재하는 상황입니다. 지연은 데이터베이스 수정 -> 캐시 지우기 전에 다른 트랜잭션의 캐시 변경이 완료되었는지 확인하기 위한 것입니다.
보충: 캐시 일관성을 보장하기 위해 이중 삭제를 지연해야 하는 이유
캐시 일관성을 보장하기 위해 이중 삭제를 지연해야 하는 이유그러나 지연된 이중 삭제의 지연 시간은 매우 어려우므로 지연된 이중 삭제는 권장하지 않습니다종합적인 고려에 따르면 데이터베이스를 먼저 수정하더라도 삭제 후 캐시에서는 이전 데이터를 읽는 데 일정 시간이 걸립니다. 이는 일반적으로 허용됩니다.
캐시가 시간 내에 삭제되는 한 다른 스레드는 최신 값을 읽을 수 있습니다.
위 내용은 Redis 캐시 지연 이중 삭제는 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!