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> 
    

추천

출처blog.csdn.net/huangge1199/article/details/112328544