Redis를 캐시로 사용할 때 메모리 공간이 가득 차면 오래된 데이터가 자동으로 제거됩니다. Memcached는 기본적으로 이러한 방식으로 작동하며 대부분의 개발자는 이에 익숙합니다. LRU는 Redis에서 지원하는 유일한 재활용 알고리즘입니다.
Eviction strategy(권장 학습: Redis 비디오 튜토리얼)최대 메모리 제한(maxmemory)에 도달하면 Redis는 구성된 정책에 따라 결정합니다. maxmemory-policy 특정 동작.
현재 버전에서 Redis 3.0이 지원하는 전략은 다음과 같습니다.noeviction: 삭제 전략 없음, 최대 메모리 제한에 도달했을 때 더 많은 메모리가 필요한 경우 오류 메시지가 직접 반환됩니다. 대부분의 쓰기 명령은 더 많은 메모리를 차지하게 합니다(DEL과 같은 드문 예외는 제외).
allkeys-lru: 모든 키에 공통되며 가장 최근에 사용된(LRU) 키를 먼저 삭제합니다.
휘발성-lru: 만료가 설정된 부분으로만 제한되며 LRU(최근 사용 횟수) 키를 먼저 삭제합니다.
allkeys-random: 모든 키에 공통되며 일부 키를 무작위로 삭제합니다.
휘발성-random: 만료가 설정된 부분으로만 제한되며 일부 키를 무작위로 삭제합니다.
휘발성-ttl: 만료가 설정된 부분으로만 제한되며, 남은 시간(TTL)이 짧은 키가 먼저 삭제됩니다.
만료 키가 설정되지 않고 전제 조건이 충족되지 않으면 휘발성-lru, 휘발성-랜덤 및 휘발성-ttl 전략의 동작은 기본적으로 noeviction(삭제 없음)과 동일합니다.
시스템의 특성에 따라 적절한 퇴거 전략을 선택해야 합니다. 물론, 동작 중 명령어를 통해 Eviction 정책을 동적으로 설정할 수도 있고, 튜닝을 위한 INFO 명령어를 통해 캐시 미스, 적중을 모니터링할 수도 있습니다.
일반적으로 말하자면:
핫 데이터와 콜드 데이터로 나누어진다면 allkeys-lru 전략을 사용하는 것이 좋습니다. 즉, 특정 비즈니스 특성이 확실하지 않은 경우 일부 키를 자주 읽고 쓰는 경우 allkeys-lru가 좋은 선택입니다.
루프에서 모든 키를 읽고 써야 하거나 각 키의 액세스 빈도가 비슷한 경우 allkeys-random 전략을 사용할 수 있습니다. 즉, 모든 요소를 읽고 쓸 확률이 거의 동일합니다.
Redis가 TTL을 기준으로 삭제해야 하는 키를 필터링하도록 하려면 휘발성-ttl 전략을 사용하세요.
휘발성-lru 및 휘발성-랜덤 전략의 주요 적용 시나리오는 캐시 키와 영구 키가 모두 있는 인스턴스입니다. 일반적으로 이와 같은 시나리오의 경우 두 개의 별도 Redis 인스턴스를 사용해야 합니다.
만료를 설정하면 추가 메모리가 소비된다는 점을 언급할 가치가 있습니다. 따라서 allkeys-lru 전략을 사용하면 만료 시간을 더 이상 설정할 수 없기 때문에 메모리를 더 효율적으로 사용할 수 있습니다.
Redis 관련 기술 기사를 더 보려면
Redis 데이터베이스 사용 튜토리얼 소개위 내용은 Redis 캐시 전략은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!