Redis LINKED List of LISTS

Redis Internel Course Redis Technical Support Redis Enterprise Server

LINKED LIST Data Structure

Doubly Linked List

    리스트에서 사용하는 양 항뱡 링크드 리스트 구조는 대부분 아는 데이터 구조이므로, 여기서는 전체적인 구조와 주요 function들을 살펴봅시다.
    아래 그림에서 보는 것처럼, 맨 앞(head) 노드와 맨 뒤(tail) 노드 그리고 노드 개수를 가지고 있는 리스트(list)가 있고, 각 노드는 포인터로 앞, 뒤로 연결되어 있고, 값을 가지고 있는 redisObject를 가리키는 포인터로 구성되어 있다.  
    redis linked list overview

    다음은 이 데이터 구조와 리스트 function을 연결해서 어느 곳에서 동작하는지 알아보자.   주요 function 위주로 연결했다.
    redis linked list and functions
    • LPUSH, LPOP은 앞(head)에서 동작하고,
    • RPUSH, RPOP은 뒤(tail)에서 동작하고,
    • LINSERT는 새 노드를 특정 노드 앞 또는 뒤에 넣고,
    • LREM은 한 노드를 삭제하고,
    • LTRIM은 여러 노드를 삭제한다.

redis.conf에 있는 관련 파라미터

  • list-max-ziplist-entries 512 : 엔트리 수가 512 이하면 짚 리스트, 512보다 많으면 링크드 리스트
  • list-max-ziplist-value 64 : 값의 크기(바이트)가 64 이하면 짚 리스트, 64보다 크면 링크드 리스트
  • 위 두 조건은 OR 조건이다. 어느 것 하나라도 만족하면 링크드 리스트로 변경된다.
  • 단, 증가할 때만 해당되고, 줄어든다고 다시 짚 리스트로 바꾸지 않는다.   이유는 512 엔트리에서 push와 pop이 반복되어 엔트리 수가 512와 513을 왔다 갔다 하면 데이터 타입 변경이 계속 발생한다.   데이터 타입 변경은 push 나 pop 처리 시간보다 수백 배 더 걸리므로 성능에 매우 악 영향을 미친다.   따라서 한번 링크드 리스트로 바뀌면 다시는 데이터 타입 변환이 발생하지 않는다.

LIST와 Linked List function 연결 관계

redis linked list and functions

<< ZIP List of LISTS LINKED List of LISTS QUICK List of LISTS >>

조회수 :

Email 답글이 올라오면 이메일로 알려드리겠습니다.

혹시 처음이세요?
레디스게이트에는 레디스에 대한 많은 정보가 있습니다.
레디스 소개, 명령어, SQL, 클라이언트, 서버, 센티널, 클러스터 등이 있습니다.
혹시 필요한 정보를 찾기 어려우시면 redisgate@gmail.com로 메일 주세요.
제가 찾아서 알려드리겠습니다.
 
close
IP를 기반으로 보여집니다.