1. LPUSH key value : 리스트의 왼쪽에 데이터를 저장.
RPUSH key value : 리스트의 오른쪽에 데이터를 저장.
저장 후 리스트에 있는 데이터의 수를 리턴함.
명령> lpush mylist value1
결과> 1
명령> lpush mylist value2
결과> 2
명령> lrange mylist 0 -1 (키에 저장된 데이터를 조회한다)
결과> 0) value2
1) value1
명령> lpush mylist value3 value4 (value를 여러개 지정할 수 있다)
결과> 4
명령> lrange mylist 0 -1
결과> 0) value4
1) value3
2) value2
3) value1
2. LPOP key value1 value2 ... : 왼쪽 데이터를 꺼냄.
RPOP key value1 value2 ... : 오른쪽 데이터를 꺼냄
데이터 조회 후 데이터는 삭제됨.
명령> lpush mylist value1 value2 value3 value4
결과> 4
명령> lrange mylist 0 -1
결과> 0) value4
1) value3
2) value2
3) value1
명령> rpop mylist
결과> value1 맨 처음 입력된 value1 리턴된다
명령> lrange mylist 0 -1
결과> 0) value4
1) value3
2) value2
명령> rpop mylist
결과> value2
Count 옵션( 6.2 버전부터 사용 가능)
명령> lpush mylist value1 value2 value3 value4
결과> 4
명령> rpop mylist 3
결과> 1) value1
2) value2
3) value3
3. LRANGE key start stop : start(0부터시작) 부터 stop(-1) 까지의 value 조회.
초과된 범위를 설정해도 에러나지 않음(범위를 초과해도 저장된 데이터 까지만 조회됨)
명령> lpush mylist value1 value2 value3 value4
결과> 4
명령> lrange mylist 0 -1
결과> 0) value4
1) value3
2) value2
3) value1
명령> lrange mylist 0 1
결과> 0) value4
1) value3
명령> lrange mylist 2 -1 세번째부터 끝까지 데이터 조회
결과> 0) value2
1) value1
오른쪽 기준으로 조회 시 맨오른쪽 데이터 = -1, 마지막에서 두번째 데이터 = -2
명령> lrange mylist -2 -1
결과> 0) value2
1) value1
명령> lrange mylist -4 -3
결과> 0) value4
1) value3
명령> lrange mylist 0 -3 마지막 두 개를 제외하고 조회할 때
결과> 0) value4
1) value3
정렬 기능
sort , asc, desc를 사용하여 정렬가능.
명령> lrange mylist 0 -1 sort
결과> 1) value1
2) value2
3) value3
4) value4
명령> lrange mylist 0 -1 desc
결과> 1) value4
2) value3
3) value2
4) value1
4. LLS key value : 패턴으로 value 조회.
명령> lpush mylist value11 value12 value21 value22
결과> 4
명령> lls mylist *
결과> 1) value22
2) value21
3) value12
4) value11
명령> lls mylist value1*
결과> 1) value12
2) value11
정렬 기능
LLS key value sort | asc | desc
명령> lls mylist * sort
결과> 1) value11
2) value12
3) value21
4) value22
5. LLEN key : value의 개수를 조회. 1.1.0버전부터 사용가능
명령> lpush mylist value1 value2
결과> 2
명령> llen mylist
결과> 2
명령> rpop mylist
결과> value1
명령> llen mylist
결과> 1
6. LINDEX key index : 특정 인덱스의 데이터를 조회. 음수사용가능.
명령> lpush mylist value1 value2 value3 value4
결과> 4
명령> lrange mylist 0 -1
결과> 0) value4
1) value3
2) value2
3) value1
명령> lindex mylist 0
결과> value4
명령> lindex mylist 1
결과> value3
명령> lindex mylist -1
결과> value1
명령> lindex mylist -2
결과> value2
7.LPOS key value : 값으로 인덱스 반환 (6.0.6 버전부터 사용가능)
명령> rpush mylist A B C 1 2 3 C C
결과> 8
명령> lpos mylist A
결과> (integer) 0
명령> lpos mylist C
결과> (integer) 2 첫 번째 C의 순서가 조회됩니다.
RANK 옵션
명령> lpos mylist C RANK 2 (2번째 C의 index반환)
결과> (integer) 6
명령> lpos mylist C RANK -1 (오른쪽 끝 부터 C조회 후 index반환)
결과> (integer) 7
COUNT 옵션 : 같은 값이 여러 개 있을 경우 찾을 개수를 지정한다.
0을 지정시 전부 조회.
명령> lpos mylist C COUNT 2
결과> 1) (integer) 2
2) (integer) 6
명령> lpos mylist C COUNT 0
결과> 1) (integer) 2
2) (integer) 6
3) (integer) 7
MAXLEN 옵션
리스트에 값이 너무 많을 경우 지정한 값을 찾는데 부하가 많이 발생할 수 있다.
검색 수를 지정하여 제한할때 사용.
RANK, COUNT, MAXLEN 옵션을 같이 사용 가능하다.
명령> lpos mylist C COUNT 0 MAXLEN 3
결과> 1) (integer) 2
명령> lpos mylist C COUNT 0 MAXLEN 7
결과> 1) (integer) 2
2) (integer) 6
주의 사항
명령> lpos mylist D
결과> (nil) (찾는 값이 없을 경우)
명령> lpos mylist D COUNT 0
결과> (empty array) (count옵션 사용 시 값이 없을 때)
LPOS key element [RANK rank] [COUNT num-matches] [MAXLEN len]
8. LSET key index value : 해당 인덱스의 값을 지정한 value로 바꿈. 음수 사용가능!
명령> lpush mylist value1 value2 value3 value4
결과> 4
명령> lrange mylist 0 -1
결과> 0) value4
1) value3
2) value2
3) value1
명령> lset mylist 0 "XXXXX"
결과> OK
명령> lset mylist 2 "YYYYY"
결과> OK
명령> lset mylist -1 "ZZZZZ"
결과> OK
명령> lrange mylist 0 -1
결과> 0) XXXXX
1) value3
2) YYYYY
3) ZZZZZ
9. LINSERT key < BEFORE | AFTER > 기준value 지정value2 : 기준value 앞or뒤에 지정 value를 넣는다.
기준 데이터가 여러개일 경우는? => 왼쪽에서 첫번째 데이터를 기준으로 한다.
기준 데이터가 없을 경우는 ? => -1 반환
2.2.0버전부터 사용가능
명령> lpush mylist value1 value3
결과> 1
명령> lrange mylist 0 -1
결과> 0) value2
1) value1
명령> linsert mylist after value3 value2 value3 뒤에 value2을 넣는다
결과> 3 입력 후 총 데이터 갯수를 리턴한다
명령> linsert mylist before value3 value4 value3 앞에 value4을 넣는다
결과> 4
명령> lrange mylist 0 -1
결과> 1) value4
2) value3
3) value2
4) value1
인덱스로 특정 위치에 데이터 넣기(Enterprise 서버에서 사용가능)
명령> linsert mylist after 1 value7 by index
결과> 5
명령> linsert mylist before -1 value8 by index
결과> 6
10. lrem key count value : 값으로 데이터 삭제.
count 양수일 경우 : 왼쪽부터 count 수 만큼 value 삭제.
count 음수일 경우 : 오른쪽부터 count수 만큼 value 삭제
count 0일 경우 : 지정한 value 전부 삭제.
삭제된 value의 개수를 리턴
명령> lpush mylist value2 value2 value2 value1
결과> 4
명령> lrange mylist 0 -1
결과> 0) value1
1) value2
2) value2
3) value2
명령> lrem mylist 1 value2
결과> 1
명령> lrange mylist 0 -1
결과> 0) value1
1) value2
2) value2
명령> lrem mylist 0 value2
결과> 2 삭제된 value 개수를 리턴한다
명령> lrange mylist 0 -1
결과> 0) value1
인덱스로 삭제 (Enterprise 서버에서 사용 가능)
인덱스를 사용하는 것이 value를 사용하는 것 보다 성능이 좋다.
음수 사용가능.
명령> lrem mylist 1 by index
결과> 2
명령> lrem mylist -1 by index
결과> 1
11. LRM key val* : 지정 패턴으로 value 삭제. ( enterprise 6.0.0 부터 사용가능)
명령> lpush mylist value11 value12 value21 value22
결과> 4
명령> lrm mylist value1*
결과> 2
명령> lls mylist *
결과> 1) value22
2) value21
12. LTRIM key start stop : 지정한 범위만 데이터를 남기고 나머지 데이터 삭제
음수 사용가능(리버스 인덱스)
명령> lpush mylist value1 value2 value3 value4
결과> 4
명령> lrange mylist 0 -1
결과> 0) value4
1) value3
2) value2
3) value1
명령> ltrim key 1 2
결과> OK
명령> lrange key 0 -1
결과> 1) value3
2) value2
주의 사항
명령> ltrim key 10 10
결과> OK (모두 지워짐)
명령> lrange key 0 -1
결과> (결과 없음)
13. LMOVE key1 key2(destination) <LEFT | RIGHT>(key1) <LEFT | RIGHT>(key2)
=> key1에서 left(head) OR right(tail) 데이터를 꺼내어 key2의 left OR right에 적재.
version 6.2.0 부터 사용 가능.
명령> lpush src_key msg_1 msg_2 msg_3
결과> 3
명령> lpush dest_key msg_A msg_B msg_C
결과> 3
명령> lmove src_key dest_key left left
결과> msg_3
명령> lrange src_key 0 -1
결과> 1) "msg_2"
2) "msg_1"
명령> lrange dest_key 0 -1
결과> 1) "msg_3"
2) "msg_C"
3) "msg_B"
4) "msg_A"
14. RPOPLPUSH key1 key2 : key1의 끝 데이터를 꺼내 key2의 맨 앞에 적재.
이 명령은 원자적으로 동작
1.2.0 버전부터 사용가능
명령> lpush src_key msg_1 msg_2 msg_3
결과> 3
명령> lpush dest_key msg_A msg_B msg_C
결과> 3
명령> rpoplpush src_key dest_key
결과> msg_1
명령> lrange src_key 0 -1
결과> 0) msg_3
1) msg_2
명령> lrange dest_key 0 -1
결과> 0) msg_1
1) msg_C
2) msg_B
3) msg_A
Circular list(환형 리스트)
명령> lpush key msg_1 msg_2 msg_3
결과> 3
명령> lrange key 0 -1
결과> 0) msg_3
1) msg_2
2) msg_1
명령> rpoplpush key key
결과> msg_1
명령> lrange key 0 -1
결과> 0) msg_1
1) msg_3
2) msg_2
15. LPUSHX key value : 키가 있을경우에만 맨 앞에 데이터 저장.
RPUSHX key value : 키가 있을경우에만 맨 에 데이터 저장.
2.2.0 버전부터 사용가능
명령> lpush mylist Hello
결과> 1
명령> lpushx mylist Redis
결과> 2
명령> lpushx mylist2 World 존재하지 않는 key에 입력할 수 없다. 0을 리턴한다.
결과> 0
명령> exists mylist2
결과> 0
16. BLPOP key <timeout seconds> : 데이터가 있을명우는 LPOP과 같은 명령어. 없을 경우는 지정한 초만큼 대기 후 꺼내옴.
timeout seconds가 0 이면 데이터가 적재될 때까지 대기후 적재되면 꺼내온다.
BRPOP key <timeout seconds>
2.0.0 버전부터 사용가능.

17. BLMOVE key1 key2(destination) <LEFT|RIGHT> <LEFT|RIGHT> <timeout>
대기 후 리스트간 데이터 이동
6.2.0 버전 부터 사용가능
18. BRPOPLPUSH key1 key2 timeout : 대기 후 데이터 들어오면 맨끝데이터를 목적key의 왼쪽에 적재
timeout이 0일때, 데이터가 입력될때까지 기다린다.
2.2.0 버전부터 사용가능.

| Redis - Sorted Sets (0) | 2024.06.16 |
|---|---|
| Redis - Sets (0) | 2024.06.16 |
| Redis - String 데이터 타입, 명령어 (1) | 2024.06.16 |
| Redis - 수정중 6 (0) | 2024.06.15 |
| Redis - 수정중 5 (0) | 2024.06.15 |