[Redis] List 명령어 설명 및 예제

' ); document.write( '' ); (adsbygoogle = window.adsbygoogle || []).push({}); } else if (window.innerWidth < 768) { document.write( '‘ ); (adsbygoogle = window.adsbygoogle || []).push({}); }

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 > LPUSlist 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이 되면 차단이 풀린다.

timeout은 초 단위 이며 0으로 하면 무한이다.

시간복잡도 : 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에 저장*/

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤