복붙노트

[REDIS] 레디 스 이미 스택의 일부인 경우, 왜 여전히 memcached를 레디 스 함께 사용?

REDIS

레디 스 이미 스택의 일부인 경우, 왜 여전히 memcached를 레디 스 함께 사용?

레디 스는 Memcached가가 제공하는 모든 것을 할 (LRU 캐시 항목 만료, 현재 버전에서 클러스터링 3.x를 +, 현재 베타)하거나 twemproxy 같은 도구에 의해. 성능도 비슷합니다. Morever, 레디 스를 사용하면 서버를 재시작의 경우 온난화 캐시를 할 필요가 없다 인한되는 지속성을 추가합니다.

Memcache를 교체로 레디 스를 선호 일부 레디 스 및 Memcache를 비교 오래된 답변을 참조 (스택에 이미 존재하는 경우) :

그럼에도 불구하고, 트위터 등 인스 타 그램, 대표자, 같은 큰 웹 규모의 회사 스택을 공부에, 나는 그들이 차 캐싱 레디 스를 사용하지 않는, 다른 목적 Memcached가와 레디 스 모두 사용하는 것으로 나타났다. 차 캐시는 여전히 memcached를하고, 레디 스 논리적 캐시를 기반으로 데이터 구조에 사용됩니다.

이미 memcached를 할 수있는 모든 것을 할 수있는 레디 스 구성 요소가있을 때 2014 년, 왜, 가치가 여전히 스택에 추가 구성 요소로 추가 할 고통을 memcached를한다? 기존 레디 스에서 떨어져 memcached를 여전히에 건축가 / 엔지니어 경사 등 유리한 점은 무엇입니까?

우리의 플랫폼을 위해, 우리는 완전히 Memcached가 폐기 한 사용은 일반뿐만 아니라 논리적 캐시 요구 사항 레디 스. 고도로 , 확대됨에 유연하고 신뢰할 수있는.

일부 예제 시나리오 :

해결법

  1. ==============================

    1.레디 스를 통해 memcached를 위해 내가 사용 사례 오늘날 볼 수있는 주된 이유는 일반 HTML 조각 캐싱 (또는 유사한 응용 프로그램)을 얻을 수 있어야 뛰어난 메모리 효율성이다. 당신이 다른 memcached를 키에 객체의 다른 필드를 저장해야하는 경우, 다음 레디 스 해시는 더 많은 메모리를 효율적으로 진행되지만, 당신은 키의 수가 많은 경우 -> 당신에게 당 더 많은 항목을 제공 할 수 있어야한다 memcached를 simple_string 쌍, 메가 바이트.

    레디 스를 통해 memcached를 위해 내가 사용 사례 오늘날 볼 수있는 주된 이유는 일반 HTML 조각 캐싱 (또는 유사한 응용 프로그램)을 얻을 수 있어야 뛰어난 메모리 효율성이다. 당신이 다른 memcached를 키에 객체의 다른 필드를 저장해야하는 경우, 다음 레디 스 해시는 더 많은 메모리를 효율적으로 진행되지만, 당신은 키의 수가 많은 경우 -> 당신에게 당 더 많은 항목을 제공 할 수 있어야한다 memcached를 simple_string 쌍, 메가 바이트.

    memcached를 대한 좋은 점 다른 것들 :

    나는 사람들이 지능형 캐싱으로 이동하거나 레디 스 데이터 구조를 통해 캐시 된 데이터의 구조를 유지하려고 할 때 레디 스는 캐시가 점점 더 합리적으로 믿습니다.

    모두에 memcached와 레디 스 실제 LRU의 퇴거를 수행하지 않지만, 그의 근사치.

    Memcache의 퇴거는 당 크기의 클래스와 슬랩 할당의 구현 세부 사항에 따라 달라집니다. 예를 들어, 당신은 상관없이, 목적이 무엇인지 이해하는 글로벌 시도를 시도하는 대신, 제거하려고합니다 memcached를 주어진 크기의 클래스에 맞는, 즉 클래스 / - 최근에 사용되지 않는 항목이 만료 항목을 추가 할 경우 그 최고의 후보 크기.

    레디 스 대신 maxmemory 한계에 도달하면 크기에 관계없이 클래스의 모든 개체를보고, 퇴거 후보로 좋은 개체를 선택하려고하지만 거의 좋은 객체, 더 큰하지 최고의 객체를 제공 할 수 있습니다 유휴 시간.

    방법 레디 스이가 몇 객체를 샘플링 가장 긴 시간 (하지 액세스) 유휴 상태였던 하나를 선택하여입니다 않습니다. 레디 스 3.0 이후 (현재 베타) 알고리즘을 개선하고 향상 근사 그래서 또한, 퇴거 걸쳐 좋은 후보 풀 걸린다. 레디 스 문서에서 당신은 어떻게 작동하는지에 대한 세부 설명과 그래프를 찾을 수 있습니다.

    그들은 인코딩 타입을 연결 한 메모리 관리에 대한 참조 횟수 : 레디 스의 값은 높은 수준의 프로그래밍 언어 객체 더 유사한 방식으로 저장되도록 레디 스는 소프트웨어의 더 복잡한 부분이다. 이 레디 스 내부 구조 좋은 및 관리 할 수있게,하지만 문자열을 취급하는 memcached를에 오버 헤드와 비교했다.

    레디 스 특별한 메모리 절약 방법으로 작은 집계 데이터 형식을 저장할 수 있습니다. 예를 들어 물체를 나타내는 레디 스 작은 해시를 들어, 해시 테이블 내부적으로 저장하지되지만 이진 고유 얼룩 등. 해쉬 개체 당 여러 필드를 설정하여 저장하는 것보다 더 효율적으로되도록 memcached를 N 키를 분리 하였다.

    하나의 JSON로 memcached를 (또는 바이너리 코드) BLOB,하지만 레디 스 반대로, 이것은 당신이 가져 오거나 독립 필드를 업데이트 할 수 없습니다로 당신은 실제로 객체를 저장할 수 있습니다.

    때문에 레디 스 데이터 구조, 캐시가 무효화 될 때 나중에 DB에서 그것을 다시, 오브젝트를 파괴하는 memcached를 사용 일반적인 패턴, 레디 스를 사용하는 원시적 인 방법입니다.

    예를 들어, 당신은 사이트의 "최신"절을 채울하기 위해 해커 뉴스에 게시 된 최신 N 뉴스를 캐시 할 필요가 상상한다. 당신이 레디 스로 할 것은 삽입 된 최신 뉴스 (M 항목에 덮인) 목록을하는 것입니다. 당신이 캐시로 데이터를 저장하기위한 또 다른 저장소를 사용하고, 레디 스 경우, 당신이 무엇 새 항목이 게시 될 때 모두보기 (레디 스와 DB)를 채우는 것입니다. 더 캐시 무효화가 없습니다.

    그러나 응용 프로그램은 항상 그렇게 레디 스 목록이 시작 후, 예를 들어, 비어있는 것으로 발견되면, 초기보기가 될 수있는 DB에서 다시 생성 논리를 할 수 있습니다.

    지능형 캐싱을 사용하여이 memcached를 비교하여보다 효율적인 방법으로 레디 스 캐싱을 수행 할 수 있지만, 모든 문제점이 패턴에 적합하다. 예를 들어 HTML 조각 캐싱은이 기술에 도움이되지 않을 수도 있습니다.

  2. ==============================

    2.습관은 휴식하기 어려운 :)

    습관은 휴식하기 어려운 :)

    진지하게, 두 가지 이유가있다 - 나의 이해에 - Memcached가 여전히 사용하는 이유 :

    하나:

  3. from https://stackoverflow.com/questions/23601622/if-redis-is-already-a-part-of-the-stack-why-is-memcached-still-used-alongside-r by cc-by-sa and MIT license