>데이터 베이스 >Redis >원인 분석: Redis Cache 이중 삭제 지연

원인 분석: Redis Cache 이중 삭제 지연

WBOY
WBOY앞으로
2022-08-24 17:34:203269검색

추천 학습: Redis 비디오 튜토리얼

캐시가 업데이트되는 대신 삭제되는 이유는 무엇입니까?

업데이트 중 분산 트랜잭션 문제가 있는 경우 캐시가 수정되어 데이터베이스 수정이 실패할 수 있습니다. 캐시만 삭제하면 데이터베이스 수정이 실패하더라도 다음 쿼리가 데이터베이스에서 데이터를 직접 가져오므로 더티 데이터가 나타나지 않습니다.

지연 이중 삭제란 무엇인가요?

즉, 엔터티 클래스를 추가, 삭제, 수정하는 경우 해당 엔터티 클래스의 캐시를 삭제해야 합니다. 삭제 위치는 데이터베이스 작업 방법 전과 후입니다.

모순에 의한 증명 방식을 채택

먼저 삭제만

suchuchinch

원인 분석: Redis Cache 이중 삭제 지연

나중에 삭제하세요

원인 분석: Redis Cache 이중 삭제 지연

결론

이를 통해 사전 삭제와 삭제 모두에 문제가 있다고 결론을 내릴 수 있습니다. 삭제 후. 따라서 지연 이중 삭제 전략이 채택됩니다

생각 2: 왜 지연되는가

아직도 모순에 의한 증거입니다. 아래 그림의 상황은 이중 삭제 후에도 이전 캐시가 여전히 존재하는 상황입니다. 지연은 데이터베이스 수정 -> 캐시 지우기 전에 다른 트랜잭션의 캐시 변경이 완료되었는지 확인하기 위한 것입니다.

원인 분석: Redis Cache 이중 삭제 지연

보충: 캐시 일관성을 보장하기 위해 이중 삭제를 지연해야 하는 이유는 무엇입니까? 이는 데이터베이스 데이터 수정과 Redis 데이터 삭제 사이의 간격 동안 적중이 있는 경우 이를 보장하기 위한 것입니다. Redis에는 데이터가 존재하지 않습니다. 이렇게 삭제하지 않으면 데이터베이스 데이터가 수정된 경우 Redis에서 이전 데이터를 계속 읽을 수 있으므로 데이터 불일치가 발생합니다. 두 번째 삭제는 데이터베이스 데이터 수정 후, 이번에는 첫 번째 Redis 삭제와 데이터베이스 데이터 수정 사이에 해당 데이터를 삭제해야 합니다. 요청이면 이전 데이터가 다시 삭제되지만, 다음에 데이터베이스의 데이터가 수정됩니다. redis.

그렇다면 데이터베이스를 두 번째 수정한 후 일정 기간 동안 Redis 삭제를 연기해야 ​​하는 이유는 무엇일까요?

이전 데이터베이스 읽기를 기다리려면 데이터가 캐시에 기록될 때까지 기다렸다가 마지막으로 더티 데이터를 삭제하므로 데이터베이스에서 서버로 데이터가 전송되는 시간입니다. 캐시 쓰기
  • 하지만 지연 이중 삭제는 지연 시간을 판단하기가 매우 어려우므로 지연 이중 삭제는 권장하지 않습니다
  • 종합적인 고려 사항에 따르면 데이터베이스를 먼저 수정하더라도 캐시를 삭제한 후에는 이전 데이터를 읽는 특정 기간은 일반적으로 허용 가능합니다.
  • 캐시가 시간 내에 삭제되는 한 다른 스레드는 최신 값을 읽을 수 있습니다.

동시에 캐시가 삭제되는지 확인하려면 mq를 사용하여 캐시가 삭제되는지 확인할 수 있습니다. 원인 분석: Redis Cache 이중 삭제 지연

mq에서 메시지가 반복적으로 소비되지 않으면 다른 사람에게 전달됩니다. 소비를 위한 소비자(캐시는 삭제됩니다)

추천 학습:

Redis 비디오 튜토리얼

위 내용은 원인 분석: Redis Cache 이중 삭제 지연의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 jb51.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제