Redis 기본 데이터 유형 (목록 목록)
목록 목록
저장 유형
정렬 된 문자열 (왼쪽에서 오른쪽으로)을 저장하고 요소를 반복 할 수 있습니다. 최대 저장량 2 ^ 32-1 (약 40 억)
일반적인 작동 명령
lindex : 목록의 지정된 인덱스 값을 가져옵니다.
-
명령
LINDEX key index
-
기술
반환 된 목록에있는 요소의 인덱스 인덱스는 키에 저장됩니다. 아래 첨자는 0부터 인덱싱되므로 0은 첫 번째 요소를 의미하고 1은 두 번째 요소를 의미하는 식입니다. 음수 색인은 목록 끝에서 색인 된 요소를 지정하는 데 사용됩니다. 이 방법에서 -1은 마지막 요소를 의미하고 -2는 마지막에서 두 번째 요소를 의미하며 앞으로 이동합니다.
키 위치 값이 목록이 아닌 경우 오류가 반환됩니다.
-
반환 값
요청의 해당 요소 또는 인덱스가 범위를 초과하면 nil을 반환합니다.
-
예
redis> LPUSH mylist "World" (integer) 1 redis> LPUSH mylist "Hello" (integer) 2 redis> LINDEX mylist 0 "Hello" redis> LINDEX mylist -1 "World" redis> LINDEX mylist 3 (nil) redis>
linsert : 목록에서 지정된 요소 앞 또는 뒤에 삽입
-
명령
LINSERT key BEFORE|AFTER pivot value
-
기술
참조 값의 피벗 전후에 키에 저장된 목록에 값을 삽입합니다.
키가 존재하지 않으면 목록은 빈 목록으로 간주되며 아무 작업도 수행되지 않습니다.
키가 있지만 저장된 목록이 목록이 아닌 경우 오류가 반환됩니다.
-
반환 값
삽입 작업 후 목록의 길이 또는 피벗 값을 찾을 수없는 경우 -1입니다.
-
예
redis> RPUSH mylist "Hello" (integer) 1 redis> RPUSH mylist "World" (integer) 2 redis> LINSERT mylist BEFORE "World" "There" (integer) 3 redis> LRANGE mylist 0 -1 1) "Hello" 2) "There" 3) "World" redis>
llen : 목록의 길이 가져 오기
-
명령
LLEN key
-
기술
키에 저장된 목록의 길이를 반환합니다. 키가 없으면 빈 목록으로 간주하고 반환 길이는 0입니다. 키에 저장된 값이 목록이 아닌 경우 오류가 반환됩니다.
-
반환 값
키에 해당하는 목록의 길이입니다.
-
예
redis> LPUSH mylist "World" (integer) 1 redis> LPUSH mylist "Hello" (integer) 2 redis> LLEN mylist (integer) 2 redis>
lpop : 키에 해당하는 목록의 첫 번째 요소를 제거하고 반환합니다.
-
명령
LPOP key
-
반환 값
첫 번째 요소의 값을 반환하거나 키가 없으면 nil을 반환합니다.
-
예
redis> RPUSH mylist "one" (integer) 1 redis> RPUSH mylist "two" (integer) 2 redis> RPUSH mylist "three" (integer) 3 redis> LPOP mylist "one" redis> LRANGE mylist 0 -1 1) "two" 2) "three" redis>
lpush : 목록 맨 앞의 보간
-
명령
LPUSH key value [value ...]
-
기술
모든 지정된 값을 키에 저장된 목록의 헤드에 삽입합니다. 키가 없으면 푸시 작업 전에 빈 목록이 생성됩니다. 키에 해당하는 값이 목록이 아닌 경우 오류가 반환됩니다.
하나의 명령을 사용하여 여러 요소를 목록에 푸시 할 수 있습니다. 명령 끝에 여러 개의 지정된 매개 변수를 추가하기 만하면됩니다. 요소는 목록의 맨 왼쪽에서 맨 오른쪽으로 하나씩 삽입됩니다. 따라서이 명령 예제
LPUSH mylist a b c
의 경우 반환 된 목록은 첫 번째 요소로 c, 두 번째 요소로 b, 세 번째 요소로 a입니다. -
반환 값
푸시 작업 후 목록의 길이입니다.
-
예
redis> LPUSH mylist "world" (integer) 1 redis> LPUSH mylist "hello" (integer) 2 redis> LRANGE mylist 0 -1 1) "hello" 2) "world" redis>
lpushx
-
명령
LPUSHX key value
-
기술
키가 이미 존재하고 목록이 저장되어있는 경우에만 해당 키 아래 목록의 선두에 값을 삽입합니다. LPUSH와 달리 키가 없으면 아무 작업도 수행되지 않습니다.
-
반환 값
푸시 작업 후 목록의 길이입니다.
-
예
redis> LPUSH mylist "World" (integer) 1 redis> LPUSHX mylist "Hello" (integer) 2 redis> LPUSHX myotherlist "Hello" (integer) 0 redis> LRANGE mylist 0 -1 1) "Hello" 2) "World" redis> LRANGE myotherlist 0 -1 (empty list or set) redis>
lrange : 목록에서 지정된 키의 지정된 범위 값을 가져옵니다.
-
명령
LRANGE key start stop
-
기술
키 목록에 저장된 지정된 범위의 요소를 반환합니다. 시작 및 끝 오프셋은 모두 0의 아래 첨자를 기반으로합니다. 즉, 목록의 첫 번째 요소의 아래 첨자는 0 (목록의 머리)이고 두 번째 요소의 아래 첨자는 1입니다.
오프셋은 음수 일 수도 있습니다. 즉, 오프셋이 목록의 끝에서 계산됨을 의미합니다. 예를 들어 -1은 목록의 마지막 요소를 의미하고 -2는 마지막 요소에서 두 번째 요소를 의미합니다.
다른 프로그래밍 언어에서 범위 함수의 일관성
목록이있는 경우, 어떤 요소가 0-100 사이 인
LRANGE list 0 10
경우이 명령은 11 개의 요소를 반환합니다. 즉 맨 오른쪽의 요소도 포함됩니다. 사용중인 프로그래밍 언어에서이 지점 은 범위와 관련된 기능과 일치 할 수도 있고 일치 하지 않을 수도 있습니다. (Ruby의 Range.new, Array # slice 또는 Python의 range () 함수와 같습니다.)범위를 벗어난 아래 첨자
아래 첨자가 목록의 범위를 초과하면 오류가 생성되지 않습니다. start가 목록의 뒷 첨자보다 크면 빈 목록이 반환됩니다. stop이 목록의 실제 꼬리보다 크면 Redis는 마지막 요소의 인덱스로 처리합니다.
-
반환 값
지정된 범위의 요소를 나열합니다.
-
예
redis> RPUSH mylist "one" (integer) 1 redis> RPUSH mylist "two" (integer) 2 redis> RPUSH mylist "three" (integer) 3 redis> LRANGE mylist 0 0 1) "one" redis> LRANGE mylist -3 2 1) "one" 2) "two" 3) "three" redis> LRANGE mylist -100 100 1) "one" 2) "two" 3) "three" redis> LRANGE mylist 5 10 (empty list or set) redis>
lrem : 목록에서 지정된 수의 값을 제거합니다.
-
명령
LREM key count value
-
기술
키에 저장된 목록에서 이전 횟수 발생의 값 값이있는 요소를 제거하십시오. count 매개 변수는 다음과 같은 방식으로이 작업에 영향을줍니다.
- count> 0 : 처음부터 끝까지 값이있는 요소를 제거합니다.
- 개수 <0 : 끝에서 시작까지 값이있는 요소를 제거합니다.
- count = 0 : 값이 값인 모든 요소를 제거합니다.
예를 들어, LREM list -2 "hello"는 list에 저장된 목록에서 "hello"의 마지막 두 항목을 제거합니다.
목록에 키가 없으면 빈 목록으로 처리되므로 키가 없으면이 명령은 0을 반환합니다.
-
반환 값
제거 된 요소의 수입니다.
-
예
redis> RPUSH mylist "hello" (integer) 1 redis> RPUSH mylist "hello" (integer) 2 redis> RPUSH mylist "foo" (integer) 3 redis> RPUSH mylist "hello" (integer) 4 redis> LREM mylist -2 "hello" (integer) 2 redis> LRANGE mylist 0 -1 1) "hello" 2) "foo" redis>
lset : 지정된 인덱스의 값을 설정합니다.
-
명령
LSET key index value
-
기술
인덱스 위치에있는 목록 요소의 값을 value로 설정합니다.
인덱스가 범위를 벗어나면 오류가 반환됩니다.
-
예
redis> RPUSH mylist "one" (integer) 1 redis> RPUSH mylist "two" (integer) 2 redis> RPUSH mylist "three" (integer) 3 redis> LSET mylist 0 "four" OK redis> LSET mylist -2 "five" OK redis> LRANGE mylist 0 -1 1) "four" 2) "five" 3) "three" redis>
ltrim : 지정된 범위 만 포함하도록 목록 수정
-
명령
LTRIM key start stop
-
기술
목록에 지정된 범위의 지정된 요소 만 포함되도록 기존 목록을 자릅니다. 시작 및 중지는 모두 0부터 계산됩니다. 여기서 0은 목록의 첫 번째 요소 (헤더), 1은 두 번째 요소 등입니다.
예를 들어
LTRIM foobar 0 2
, foobar에 저장된 목록이 잘리고 목록의 처음 3 개 요소 만 유지됩니다.시작과 끝은 목록의 마지막 요소에 대해 -1, 마지막에서 두 번째 요소에 대해 -2 등과 같이 목록 끝에서 오프셋을 나타 내기 위해 음수를 사용할 수도 있습니다.
범위를 초과하는 첨자는 오류를 일으키지 않습니다. start가 목록의 끝을 초과하거나 start> end를 초과하면 결과는 빈 목록이됩니다 (즉, 키가 제거됨). 끝이 목록의 끝을 초과하면 Redis는 목록의 마지막 요소로 처리합니다.
LTRIM
의 일반적인 사용법은LPUSH
/RPUSH
와 함께 사용하는 것입니다. 예 :- LPUSH mylist someelement
- LTRIM mylist 0 99
이 명령 쌍은 새 요소를 목록에 밀어 넣고 목록이 100 개 이상의 요소로 늘어나지 않도록합니다. 이는 Redis를 사용하여 로그를 저장할 때와 같이 매우 유용합니다. 이러한 방식으로 LTRIM을 사용할 때 평균적으로 한 번에 하나의 요소 만 제거되므로 작업의 복잡성이 O (1)라는 점에 유의하는 것이 중요합니다.
-
예
redis> RPUSH mylist "one" (integer) 1 redis> RPUSH mylist "two" (integer) 2 redis> RPUSH mylist "three" (integer) 3 redis> LTRIM mylist 1 -1 OK redis> LRANGE mylist 0 -1 1) "two" 2) "three" redis>
rpop : 키에 저장된 목록의 마지막 요소를 제거하고 반환합니다.
-
명령
RPOP key
-
반환 값
마지막 요소의 값 또는 키가 없으면 nil입니다.
-
예
redis> RPUSH mylist "one" (integer) 1 redis> RPUSH mylist "two" (integer) 2 redis> RPUSH mylist "three" (integer) 3 redis> RPOP mylist "three" redis> LRANGE mylist 0 -1 1) "one" 2) "two" redis>
rpoplpush : 한 목록의 꼬리 요소를 다른 목록의 선두에 배치
-
명령
RPOPLPUSH source destination
-
기술
소스에 저장된 목록의 마지막 요소 (목록의 마지막 요소)를 원자 적으로 반환하고 제거하고이 요소를 대상 (목록의 헤드)에 저장된 목록의 첫 번째 요소 위치에 놓습니다.
예 : 소스가 목록 a, b 및 c를 저장하고 대상이 목록 x, y 및 z를 저장한다고 가정합니다. RPOPLPUSH를 실행 한 결과 소스는 목록 a, b를 저장하고 대상은 목록 c, x, y 및 z를 저장합니다.
소스가 존재하지 않으면 nil 값을 반환하고 아무것도하지 않습니다. 소스와 대상이 동일한 경우이 작업은 목록의 마지막 요소를 제거하고 해당 요소를 목록의 맨 앞에 배치하는 것과 동일하므로이 명령은 목록을 회전하는 명령으로 간주 될 수도 있습니다.
-
반환 값
제거 및 삽입 된 요소
-
예
redis> RPUSH mylist "one" (integer) 1 redis> RPUSH mylist "two" (integer) 2 redis> RPUSH mylist "three" (integer) 3 redis> RPOPLPUSH mylist myotherlist "three" redis> LRANGE mylist 0 -1 1) "one" 2) "two" redis> LRANGE myotherlist 0 -1 1) "three" redis>
rpush : 목록 끝에 보간
-
명령
RPUSH key value [value ...]
-
기술
지정된 모든 값을 키에 저장된 목록의 끝에 삽입하십시오. 키가 없으면 빈 목록이 생성되고 푸시 작업이 수행됩니다. 키가 목록이 아닌 경우 오류가 반환됩니다.
하나의 명령을 사용하여 여러 요소를 큐에 넣을 수 있으며 명령 뒤에 여러 매개 변수를 지정하기 만하면됩니다. 요소는 목록의 끝에서 왼쪽에서 오른쪽으로 하나씩 삽입됩니다. 예를 들어 RPUSH mylist abc 명령은 첫 번째 요소가 a, 두 번째 요소가 b, 세 번째 요소가 c 인 목록을 반환합니다.
-
반환 값
푸시 작업 후 목록의 길이입니다.
-
예
redis> RPUSH mylist "hello" (integer) 1 redis> RPUSH mylist "world" (integer) 2 redis> LRANGE mylist 0 -1 1) "hello" 2) "world" redis>
rpushx
-
명령
RPUSHX key value
-
기술
키가 존재하고 목록 인 경우에만 값 값을 목록 키 끝에 삽입하십시오. 그리고
RPUSH
키가 존재하지 않을 때, RPUSHX 명령은 아무것도하지 않는다, 반대로 명령. -
반환 값
RPUSHX 명령이 실행 된 후 테이블의 길이.
-
예
redis> RPUSH mylist "Hello" (integer) 1 redis> RPUSHX mylist "World" (integer) 2 redis> RPUSHX myotherlist "World" (integer) 0 redis> LRANGE mylist 0 -1 1) "Hello" 2) "World" redis> LRANGE myotherlist 0 -1 (empty list or set) redis>