[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에
저장
*/





댓글 달기

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

위로 스크롤