Redis List 타입과 명령어
개요
Redis의 데이터 타입 중 하나인 List에 대해 알아보자.
List 데이터 타입
- List 는 말그대로 문자열의 리스트형 구조이다.
- 삽입한 순서대로 정렬되며, 리스트 앞·뒤에 아이템을 추가할 수 있다.
- 구조
key: [value1, value2, value3, ...]
예시
redis 127.0.0.1:6379> LPUSH tutorials redis
(integer) 1
redis 127.0.0.1:6379> LPUSH tutorials mongodb
(integer) 2
redis 127.0.0.1:6379> LPUSH tutorials mysql
(integer) 3
redis 127.0.0.1:6379> LRANGE tutorials 0 10
1) "mysql"
2) "mongodb"
3) "redis"
LPUSH tutorials redis
- tutorials 라는 리스트(key) 앞에 redis를 추가한다.
LRANGE tutorials 0 10
- 0번째부터 10번째까지 key-value pair 를 반환한다.
주요 명령어 Reference
NO. | 명령어 | 설명 | 시간복잡도 | 비고 | ||
---|---|---|---|---|---|---|
1 | BLPOP key1 key2 … timeout | 해당 key의 앞쪽 아이템을 반환한다. 만약 꺼낼 수 있는 아이템이 없다면 설정한 timeout(초) 만큼 기다리면서 꺼낼 수 있는 상황일 때 꺼내온다. |
O(N) N: pop할 key 갯수 |
|||
2 | BRPOP key1 key2 … timeout | 해당 key의 뒷쪽 아이템을 반환한다. 만약 꺼낼 수 있는 아이템이 없다면 설정한 timeout(초) 만큼 기다리면서 꺼낼 수 있는 상황일 때 꺼내온다. |
O(N) N: pop할 key 갯수 |
|||
3 | BRPOPLPUSH source destination timeout | source의 뒷쪽 아이템을 꺼내서 destination의 앞쪽에 추가한다. 만약 꺼낼 수 있는 아이템이 없다면 설정한 timeout(초) 만큼 기다리면서 꺼낼 수 있는 상황일 때 꺼낸다. |
O(1) | deprecate (비권장) BLMOVE 사용 권장 |
||
4 | LINDEX key index | 해당 index의 아이템을 꺼낸다. | O(N) N: index |
|||
5 | LINSERT key BEFORE | AFTER pivot value | 해당 key에 저장된 pivot(value)의 앞 | 뒤에 value를 삽입한다. | O(N) N: pivot의 index |
|
6 | LLEN key | 해당 key의 길이를 반환한다. | O(1) | |||
7 | LPOP key [count] | 해당 key의 앞쪽 아이템을 count 개만큼 꺼낸다. | O(N) N: count |
|||
8 | LPUSH key value1 value2 … | 해당 key의 앞쪽에 하나 이상의 value를 추가한다. | O(N) N: 추가할 value 갯수 |
|||
9 | LPUSHX key value | 만약 해당 key 리스트가 존재한다면 value를 앞쪽에 추가한다. | O(N) N: 추가할 value 갯수 |
|||
10 | LRANGE key start stop | (start ~ stop)까지의 아이템을 반환한다. | O(S+N) S: HEAD나 TAIL에서 start까지의 거리 N: stop - start 거리 |
|||
11 | LREM key count value | 해당 key의 value를 앞에서부터 count 개 만큼 제거한다. | O(N+M) N: List의 길이 M: 제거할 아이템 갯수 |
|||
12 | LSET key index value | 해당 index를 갖는 아이템을 value로 교체한다. | O(N) N: List의 길이 |
|||
13 | LTRIM key start stop | 해당 리스트를 (start ~ stop)까지로 자른다. | O(N) N: 자르면서 제거될 아이템 갯수 |
|||
14 | RPOP key | 해당 key의 뒷쪽 아이템을 꺼낸다. | O(N) N: 반환될 아이템 갯수 |
|||
15 | RPOPLPUSH source destination | source의 뒷쪽 아이템을 꺼내서 destination의 앞쪽에 추가한다. | O(1) | deprecate (비권장) LMOVE 사용 권장 |
||
16 | RPUSH key value1 value2 … | 해당 key의 뒷쪽에 하나 이상의 value를 추가한다. | O(N) N: 저장할 value 갯수 |
|||
17 | RPUSHX key value | 만약 해당 key 리스트가 존재한다면 value를 뒷쪽에 추가한다. | O(N) N: 저장할 value 갯수 |