복붙노트

[REDIS] 레디 스 데이터 구조 공간 요구 사항

REDIS

레디 스 데이터 구조 공간 요구 사항

레디 스의 정렬 된 세트와 목록 사이 공간에서의 차이점은 무엇입니까? 내 생각 엔 정렬 된 세트는 균형 이진 트리의 어떤 것을, 그리고 목록은 링크 된 목록입니다. 이 방법은 내가 그들 각각 인코딩하고있어 그 세 값의 상단에, 키, 내가 함께로 찾으면됩니다하지만 점수와 LinkedList의 가치, 가치 점수 것을, 오버 헤드는 LinkedList의 요구는 하나의 트랙을 유지하는 것입니다 다른 노드, 상기 이진 트리의 요구는 정렬 된 세트를 사용하여 공간 오버 헤드가 O (N)이다 그래서, 두 개의 트랙을 유지한다.

단일 노드의 공간 오버 헤드가 33 % 인 64 비트 컴퓨터에서 4 걷고 3 걷고에서 이동처럼 내 값 경우 모두 걷고 있고, 다른 노드에 대한 포인터도 걷고있다 점수 것 같습니다 공간에 증가한다.

이 사실인가요?

해결법

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

    1.그것은 당신의 추정보다 훨씬 더 많은 것이다. 하자 가정하자 ziplists은 (즉, 당신이 항목의 상당수가) 사용되지 않습니다.

    그것은 당신의 추정보다 훨씬 더 많은 것이다. 하자 가정하자 ziplists은 (즉, 당신이 항목의 상당수가) 사용되지 않습니다.

    항목 당 3 포인터 (이전, 다음, 값), • 레디 스리스트는 고전적인 이중 연결리스트이다.

    소트 세트는 사전 플러스 스킵 목록입니다. 사전에, 상품 잘 (키 값 옆)으로 3 포인터를 저장한다. 스킵리스트 메모리 공간 평가할 더 복잡하다 : 각각의 노드는 한 번 (점수), 2- 포인터 (후진 OBJ)를 얻어, 플러스 N 1-32 대부분의 항목 사이의 n 쌍 (포인터 스팬 값)만을 1 걸릴 2 커플.

    그것이 ziplist로 표시되지 않은 경우 즉, 정렬 된 세트의 가장 오버 헤드까지 레디 스 데이터 구조이다. 리스트에 비해 메모리가 오버 200 % 이상 (즉, 3 배)이다.

    참고 : 레디 스와 메모리 사용량을 평가하는 가장 좋은 방법은 큰 목록을 작성하거나 메모리 풋 프린트를 얻기 위해 의사 데이터와 사용 정보와 소트 세트 시도하는 것입니다.

  2. from https://stackoverflow.com/questions/12269429/redis-data-structure-space-requirements by cc-by-sa and MIT license