반응형
리스트에 대해서...
- 리스트 데이터는 저장 순서를 기억하는 데이터 구조이며, 중복을 허용함.
- 저장가능한 최대요소 수
- 2의 32승 - 1 개, 대략적으로 42억개...
- 구현은 이중 링크드 리스트로 구현되어 있음.
- 즉, 첫번째(head)요소와 마지막(tail)요소의 조회 시간이 가장 빠르고, 리스트의 중간에 저장된 데이터를 조회하는 시간이 가장 오래 걸리는 특징이 존재함.
- head
- 데이터 왼쪽
- tail
- 데이터 오른쪽
- head
- lpush
- left push
- rpush
- right push
- 즉, 첫번째(head)요소와 마지막(tail)요소의 조회 시간이 가장 빠르고, 리스트의 중간에 저장된 데이터를 조회하는 시간이 가장 오래 걸리는 특징이 존재함.
- 리스트 데이터의 저장구조
-
- 리스트 데이터 구조는 내부적으로 Deque(Double ended queue) 구조를 구현하고 있음.
- Deque 란?
- 선형 자료구조인 stack 과 queue 의 특징을 하나로 모은 자료구조
- 양쪽 방향 모두에서 입력과 출력을 할 수 있음.
- stack
- 한쪽 방향에서만 데이터를 입력하고 조회할 수 있음.
- queue
- 한쪽 방향으로 입력하고 반대쪽 방향에서 조회할 수 있음.
- 선형 자료구조인 stack 과 queue 의 특징을 하나로 모은 자료구조
- Deque 란?
- 리스트 데이터 구조는 내부적으로 Deque(Double ended queue) 구조를 구현하고 있음.
-
리스트 데이터의 연산
- stack 연산
- 나중에 입력된 데이터가 먼저 출력되는 자료구조
-
- 위치정보
- bottom
- top
- 위치정보
- 데이터가 입력되면, bottom 부터 top 방향으로 데이터를 하나씩 쌓아감.
- lpush, lpop or rpush, rpop 명령을 사용하여 리스트 데이터의 한쪽에서만 자료의 입출력이 일어나도록 구현함.
- queue 연산
- 먼저 입력된 데이터가 먼저 출력되는 자료구조
-
- 위치정보
- head
- tail
- 위치정보
- 데이터가 입력되면, head부터 tail 방향으로 데이터를 하나씩 쌓아감.
- lpush, rpop or rpush, lpop 명령을 사용하여 큐 자료구조를 구현함.
- 리스트 데이터 조회
- 단건조회
- 하나의 요소를 조회함
- lindex
- 범위조회
- 인덱스 범위에 해당하는 요소를 조회함.
- lrange
- 블로킹 조회
- 데이터가 입력될때까지 기다리는 조회.
- 블로킹이란?
- 어떤 연산이 특정조건이 될때까지 대기하는 것을 말함.
- 지원명령
- 참고로, B는 Blocking 을 의미함.
- blpop
- brpop
- brpoplpush
- 참고로, B는 Blocking 을 의미함.
- 단건조회
리스트 데이터 주요 명령
- rpop
- 지정된 리스트에 저장된 요소중 맨 오른쪽의 요소를 조회함.
- 단, 저장된 데이터가 없거나, 키가 존재하지 않을 때는 nil을 반환함.
- 명령) rpop [key]
- 응답) <벌크 응답>, 조회된 요소값.
- 지정된 리스트에 저장된 요소중 맨 오른쪽의 요소를 조회함.
- blpop
- 지정된 리스트에 지정된 요소 중 맨 왼쪽 요소를 조회함.
- 단, 저장된 데이터가 없거나 키가 존재하지 않을 때는 말료시간에 지정된 시간만큼 대기함.
- 단위
- 초(sec)
- 단, 지정된 만료시간이 0이면, 데이터가 들어올때까지 무한히 대기함.
- 단위
- 단, 저장된 데이터가 없거나 키가 존재하지 않을 때는 말료시간에 지정된 시간만큼 대기함.
- 명령) blpop [key1] [key2] .. [expire time]
- 응답) <멀티벌크응답>, 조회된 요소
- 지정된 리스트에 지정된 요소 중 맨 왼쪽 요소를 조회함.
- brpop
- 지정된 리스트에 저장된 요소 중 맨 오른쪽 요소를 조회함.
- 단, 저장된 데이터가 없거나 키가 존재하지 않을 때는 말료시간에 지정된 시간만큼 대기함.
- 단위
- 초(sec)
- 단, 지정된 만료시간이 0이면, 데이터가 들어올때까지 무한히 대기함.
- 명령) brpop [key1] [key2] .. [expire time]
- 응답) <멀티벌크응답>, 조회된 요소
- 지정된 리스트에 저장된 요소 중 맨 오른쪽 요소를 조회함.
- lindex
- 지정된 리스트에 저장된 요소의 인덱스에 해당하는 요소의 값을 조회함.
- 인덱스는 0 부터 시작.
- 리스트 데이터의 왼쪽이 시작위치임.
- 음수표현을 사용할 수 있음.
- 단, 해당 위치에 요소가 존재하지 않을 때 nil 을 반환함.
- 명령) lindex[key] [index]
- 응답) <벌크응답>, 해당 인덱스 위치에 저장된 요소
- 지정된 리스트에 저장된 요소의 인덱스에 해당하는 요소의 값을 조회함.
- 이외의 명령은 아래 페이지를 참조하면됨.
- 예시
결론
- Redis 에는 리스트 데이터가 존재함.
- 상황에 따라서, 명령을 조합하여 stack, queue 등등의 자료구조를 구현하면됨.
- 리스트 데이터 조회 중 블로킹 조회가 있으며, 대기 시간도 존재하여, 해당 기능을 잘 활용한다면, stack, queue 등등의 구조의 작업 큐로 사용할 수 도 있을 것 같음.
- 오늘의 명언 한마디
- 모든 실수에는 마술이 숨어 있다. 따라서 나는 더욱 많은 실수를 하면 할수록, 그런 실수에서 더많이 배울수록 삶에서 더많은 마술을 갖는다. -로버트 기요사키, 『부자아빠, 가난한아빠3』 중에서..
- 참고로, 이글을 접하고 나서..제 nickname 이 Magic(마술) 된 이유이기도 하지요 ^^; 삶의 실수를 통해서 더많은 배움과 더많은 삶의 마술을 갖자!
- 모든 실수에는 마술이 숨어 있다. 따라서 나는 더욱 많은 실수를 하면 할수록, 그런 실수에서 더많이 배울수록 삶에서 더많은 마술을 갖는다. -로버트 기요사키, 『부자아빠, 가난한아빠3』 중에서..
- 오늘의 영어 한마디
- 질문) What's the matter with you?
- 대체 왜 그러는 거야?
- 응답) I'm sorry, I won't do it any more.
- 미안해, 다시는 안 그럴게.
- 해설
- What's the matter with you? 는 "무슨일있어?" 라는 의미가 아니라, 예문과 같이 화를 내는 상황에선 "대체 왜 그런거야?" 라는 뜻으로, 상대방을 힐문하는 뉘앙수가 강함.
- What's wrong with you? 역시 같은 의미.
- What's the matter with you? 는 "무슨일있어?" 라는 의미가 아니라, 예문과 같이 화를 내는 상황에선 "대체 왜 그런거야?" 라는 뜻으로, 상대방을 힐문하는 뉘앙수가 강함.
- 질문) What's the matter with you?
300x250
'좋아하는 것_매직IT > 9.redis' 카테고리의 다른 글
16.Redis, 송/수신 프로토콜에 대해서 알아볼께요.^^ (0) | 2021.01.14 |
---|---|
14.Redis, Key 관리 명령에 대해서 알아볼께요.^^ (0) | 2021.01.14 |
12.Redis, 정렬된 셋 데이터에 대해서 알아보자. (0) | 2021.01.14 |
11.Redis, 셋 데이터에 대해서 알아보자. (0) | 2021.01.14 |
10.Redis, 해시 데이터에 대해서 알아보자. (0) | 2021.01.14 |