티스토리 뷰
List 관련 명령어 예제
- LPUSH, RPUSH, LRANGE
설명(LPUSH) : 지정된 모든 값을 키에 저장된 목록의 처음에 넣습니다. 키가 없으면 조작을 수행하기 전에 키가 빈 목록으로 작성
설명(RPUSH) : 지정된 모든 값을 키에 저장된 목록의 끝에 넣습니다. 키가 없으면 조작을 수행하기 전에 키가 빈 목록으로 작성
설명(LRANGE) : list형식으로 저장된 키의 값을 개수를 인덱스를 지정하여 가져올 수 있음. 음수의 경우일 경우는 마지막 값을 의미
-1 은 마지막 값, -2 마지막에서 2번째 값, -3 마지막에서 3번째 값
시간복잡도 : O(1)
redis-cli > LPUSH key value [value ...]
redis-cli > RPUSH key value [value ...]
redis-cli > LRANGE key start stop
redis > RPUSH list 5 6 7 8 9 (integer) 5 redis > LPUSH list 1 2 3 4 5 (integer) 10 redis > LARNGE list 0 9 1) "5" 2) "4" 3) "3" 4) "2" 5) "1" 6) "5" 7) "6" 8) "7" 9) "8" 10) "9" redis > LRANGE list -4 -3 1) "6" 2) "7" |
- LPOP, RPOP
설명(LPOP) : 리스트 키에 저장된 목록의 첫 번째 요소를 제거하고 반환
설명(RPOP) : 리스트 키에 저장된 목록의 마지막 요소를 제거하고 반환
시간복잡도 : O(1)
redis-cli > LPOP key
redis-cli > RPOP key
redis > RPUSH list 5 6 7 8 9 (integer) 5 redis > LPUSH list 1 2 3 4 5 (integer) 10 redis > LPOP list "5" redis > RPOP list "9" |
- LPUSHX, RPUSHX
설명(LPUSHX) : 키가 이미 있고 목록을 보유하고 있는 경우에만 목록의 첫 번째에 값을 삽입합니다.
설명(RPUSHX) : 키가 이미 있고 목록을 보유하고 있는 경우에만 목록의 마지막에 값을 삽입합니다.
시간복잡도 : O(1)
redis-cli > LPOP key
redis-cli > RPOP key
redis > RPUSHX list 1 (integer) 0 redis > RPUSH list 1 2 3 4 5 (integer) 5 redis > RPUSHX list 3 (integer) 6 redis > LRANGE list 0 -1 1) "1" 2) "2" 3) "3" 4) "4" 5) "5" 6) "3" |
- LINDEX
설명(LINDEX) : 리스트 키에 지정된 인덱스 요소를 반환합니다. 0은 첫 번째, 1은 두 번쨰, -1 뒤에서 첫번째, -2 뒤에서 두번째
시간복잡도 : O(N)
redis-cli > LINDEX key index
redis > LPUSH list "World" (integer) 1 redis > LPUSH list "Hello" (integer) 2 redis > LINDEX list 0 "Hello" redis > LINDEX list -1 "World" |
- LSET, LREM
설명(LSET) : 리스트에 특정 인덱스 요소에 값을 설정합니다.
설명(LREM) : 리스트에 특정 인덱스 요소의 값을 삭제합니다.
시간복잡도 : O(N)
redis-cli > LSET key index value
redis > RPUSH list 1 2 3 4 5 (integer) 5 redis > LSET list 3 5 "OK" redis > LRANGE list 0 -1 1) "1" 2) "2" 3) "3" 4) "5" 5) "5" redis > LINDEX list -1 "World" |
- LLEN
설명(LLEN) : 키에 저장된 목록의 길이를 반환. 키에 값이 없으면 0을 리턴. 목록형이 아니면 에러를 반환
시간복잡도 : O(1)
redis-cli > LLEN key
redis > LPUSH list "World" (integer) 1 redis > LPUSH list "Hello" (integer) 2 redis > LLEN list (integer) 2 |
- LINSERT
설명(LINSERT) : 키에 저장된 목록에 참조 값 피벗 전후에 값을 삽입한다. 피벗값이 중복이면 앞에 있는 값을 우선적으로 선택한다.
시간복잡도 : O(N)
redis-cli > LINSERT key BEFORE | AFTER pivot value
redis > LPUSH list 1 2 3 4 5 6 7 8 9 10 (integer) 10 redis > LINSERT list before 5 4 (integer) 11 redis > LINSERT list after 5 5 (integer) 12 redis > LRANGE list 0 -1 1) "1" 2) "2" 3) "3" 4) "4" 5) "4" 6) "5" 7) "5" 8) "6" 9) "7" 10) "8" 11) "9" 12) "10" |
- LTRIM
설명(LTRIM) : 키의 지정된 요소만큼 범위를 잘라냅니다.
시간복잡도 : O(N)
redis-cli > LTRIM key start stop
redis > RPUSH list 1 2 3 4 5 6 7 8 9 10 (integer) 10 redis > LTRIM list 5 -1 "OK" redis > LRANGE list 0 -1 1) "6" 2) "7" 3) "8" 4) "9" 5) "10" |
- RPOPLPUSH
설명(RPOPLPUSH) : 마지막 요소를 반환하고 제거하고 새로운 키 대상 헤드에 푸쉬(저장)합니다.
시간복잡도 : O(1)
redis-cli > RPOPLPUSH source destination
redis > RPUSH list 1 2 3 (integer) 3 redis > RPUSH list1 4 5 6 "OK" redis > RPOPLPUSH list list1 "3" redis > LRANGE list 0 -1 1) "1" 2) "2" redis > LRANGE list1 0 -1 1) "3" 2) "4" 3) "5" 4) "6" |
- BLPOP, BRPOP
설명(BLPOP) : 주어진 키 값에서 헤드에 POP을 할 요소가 없으면 연결을 차단한다. 값이 들어와서 POP할 때까지 특정 timeout 동안 차단된다. 값이 들어와서 pop이 되면 차단이 풀린다.
설명(BRPOP) : 주어진 키값에서 마지막 POP을 할 요소가 없으면 연결을 차단한다. 값이 들어와서 POP할 때까지 특정 timeout 동안 차단된다. 값이 들어와서 pop이 되면 차단이 풀린다.
시간복잡도 : O(1)
redis-cli > BLPOP key [key ...] timeout
redis-cli > BRPOP key [key ...] timeout
redis > BLPOP list1 list2 list3 0 /* 아무런 반응이 없음 연결이 차단 됌 다른 쉘 창을 켜서 RPUSH list1 hello 명령어를 입력하면 list1 -> list2 -> list3 순으로 순차적으로 POP할 요소를 찾음 */ 1) "list1" 2) "hello" /* list1 에서 값을 꺼내고 연결이 다시 활성화 됌 */ |
- BRPOPLPUSH
설명(BRPOPLPUSH) : RPOPLPUSH의 차단변형이다. source에 POP을 할 수 있는 값이 있으면 RPOPLPUSH와 똑같이 작동한다.
시간복잡도 : O(1)
redis-cli > BRPOPLPUSH source destination timeout
redis > BRPOPLPUSH list1 list2 0 /* 아무런 반응이 없음 연결이 차단 됌 다른 쉘 창을 켜서 RPUSH list1 hello 명령어를 입력하면 list1 에서 값을 POP 한 후 list2에 저장 */ |