redis 데이터 구조 -- 압축 목록

1566 단어
압축 목록 은 목록 과 해시 의 밑바닥 실현 중의 하나 이다.목록 에 요소 가 적 고 요소 가 작은 정수 나 짧 은 문자열 일 때 redis 는 압축 목록 을 목록 의 바 텀 으로 사용 합 니 다.해시 리 가 소량의 키 쌍 을 포함 하고 키 값 이 모두 작은 정수 나 짧 은 문자열 일 때 redis 는 압축 목록 을 바 텀 으로 사용 합 니 다.압축 목록 은 메모 리 를 절약 하기 위해 설계 되 었 으 며 연속 데이터 구조 입 니 다.다음 과 같은 몇 가지 부분 으로 구성 된다.
속성
유형
길이
용도.
zlbytes
uint32_t
4byte
전체 목록 의 메모리 점용 바이트 수 를 기록 하고 메모리 재배 치 또는 zlend 를 계산 할 때 사용 합 니 다.
zltail
uint32_t
4byte
기록 표 끝 은 시작 위치 에 대한 오프셋 에 비해 빠 른 접근 이 편리 합 니 다.
zllen
uint16_t
2byte
노드 총 수 를 기록 하고 노드 총수 가 uint 16 보다 많 을 때max (65535) 시 노드 를 옮 겨 다 녀 야 노드 의 총 수 를 알 수 있 습 니 다.
entryX
목록 노드
부정 확 하 다
실제 노드 데 이 터 를 저장 하 는 데 사용 합 니 다.
zlend
uint8_t
1byte
특수 값 0xFF, 태그 목록 끝
압축 목록 노드 는 previous_entry_length, encoding, content 세 부분 으로 구성 된다.그 중에서 content 바이트 배열 이나 전체 수 치 를 저장 할 수 있 습 니 다. 바이트 배열 은 다음 과 같 을 수 있 습 니 다.
  • 길이 가 63 (2 ^ 6 - 1) 과 같은 바이트 배열 보다 작 음;
  • 길이 가 16383 (2 ^ 14 - 1) 과 같은 바이트 배열 보다 작 습 니 다.
  • 길이 가 4294967295 (2 ^ 32 - 1) 와 같은 바이트 배열 보다 작 습 니 다.정 수 는 다음 과 같다.
  • 4 자리 길이, 0 에서 12 사이 의 정수;
  • 1 바이트 길이 에 기호 정수 가 있다.
  • 3 바이트 길이 에 기호 정수 가 있다.
  • int16_t,int32_t,int64_t
  • previous_entry_length 길 이 는 1 또는 5 의 정수 로 앞의 노드 의 전체 길 이 를 기록한다.encoding 기록 content 의 데이터 유형 과 길이.
    이 를 통 해 알 수 있 듯 이 previous_entry_length 길이 가 불확실 하기 때문에 노드 의 길이 가 불확실 하고 노드 삽입 이나 삭제 가 발생 할 때 여러 노드 의 체인 업데이트 상황 이 발생 할 수 있다.

    좋은 웹페이지 즐겨찾기