>  기사  >  데이터 베이스  >  Redis 눈사태 및 침투를 해결하는 방법

Redis 눈사태 및 침투를 해결하는 방법

(*-*)浩
(*-*)浩원래의
2019-11-27 10:45:354691검색

Redis 눈사태 및 침투를 해결하는 방법

캐시 침투

캐시 침투란 확실히 존재하지 않는 데이터를 쿼리하는 것을 말합니다. 캐시가 히트하지 않기 때문에 데이터베이스에 대한 후속 쿼리에서는 결과를 쿼리할 수 없으므로 캐시에 기록되지 않습니다. . 이렇게 하면 모든 쿼리가 데이터베이스를 요청하게 되어 캐시 침투가 발생합니다. (권장 학습: Redis 비디오 튜토리얼)

Redis 눈사태 및 침투를 해결하는 방법

Solution

Bloom 필터링

이 저장됩니다. 해시 형식인 경우 제어 계층에서 먼저 확인되고 일치하지 않으면 폐기되므로 기본 저장소 시스템에 대한 쿼리 부담을 피할 수 있습니다.

빈 객체 캐시

저장 계층이 누락된 경우 객체가 반환됩니다. 또한 캐시되고 동시에 만료 시간이 설정됩니다. 나중에 데이터에 액세스하면 백엔드 데이터 소스를 보호하기 위해 캐시에서 가져옵니다.

그러나 이 방법에는 두 가지 문제가 있습니다. :

비어 있는 경우 값을 캐시할 수 있습니다. 즉, null 값을 가진 키가 많을 수 있으므로 캐시에 더 많은 키를 저장하기 위해 더 많은 공간이 필요합니다.

null 값에 만료 시간이 설정되어 있더라도; , 여전히 캐시가 있을 것입니다. 레이어와 스토리지 레이어의 데이터는 일정 기간 동안 일관성이 없으며 이는 일관성을 유지해야 하는 비즈니스에 영향을 미칠 것입니다.

Cache Avalanche

Cache Avalanche는 캐시 계층이 많은 수의 요청을 전달하기 때문에 스토리지 계층을 효과적으로 보호한다는 의미입니다. 그러나 어떤 이유로 캐시 계층 전체가 서비스를 제공할 수 없는 경우 모든 요청이 도달하게 됩니다. 스토리지 계층에 대한 호출 수가 급격히 증가하여 스토리지 계층도 중단됩니다.

Redis 눈사태 및 침투를 해결하는 방법

솔루션

캐시 레이어 서비스의 고가용성 보장

개별 노드, 개별 머신, 심지어 컴퓨터실이 다운되더라도 서비스는 계속 제공될 수 있습니다. 예를 들어 Redis Cluster Sentinel 및 Redis입니다. 고가용성을 달성했습니다.

백엔드 흐름을 제한하고 다운그레이드하려면 격리 구성 요소를 사용하세요.

캐시가 만료된 후 데이터베이스를 읽고 캐시에 쓰는 스레드 수는 잠금 또는 대기열에 의해 제어됩니다. 예를 들어, 하나의 스레드만 데이터를 쿼리하고 특정 키에 대한 캐시를 쓸 수 있으며 다른 스레드는 대기합니다.

데이터 예열

캐시 재로드 메커니즘을 사용하여 캐시를 미리 업데이트한 다음, 대규모 동시 액세스가 발생하기 전에 캐시에 있는 다른 키의 로드를 수동으로 트리거하고, 서로 다른 만료 시간을 설정하여 캐시를 무효화할 수 있습니다. 가능한 한 같은 시점.

더 많은 Redis 관련 기술 기사를 보려면 Redis 시작 튜토리얼 칼럼을 방문하여 알아보세요!

위 내용은 Redis 눈사태 및 침투를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.