>  기사  >  데이터 베이스  >  redis의 list 데이터 타입에 관련된 명령어 분석 및 사용법

redis의 list 데이터 타입에 관련된 명령어 분석 및 사용법

WBOY
WBOY앞으로
2023-05-28 09:32:18993검색

    목록 소개

    • list는 삽입 순서로 정렬된 문자열 배열입니다(일반 용어로는 여전히 문자열을 저장합니다). 목록의 헤드(왼쪽) 또는 꼬리(오른쪽)에 요소를 추가할 수 있으며 목록에는 최대 ^32-1개의 요소(목록당 40억 개 이상의 요소)가 포함될 수 있습니다.

    • Redis의 목록은 Java의 LinkedList와 매우 유사합니다. 맨 아래 계층은 연결 목록 구조로, 목록의 삽입 및 삭제 작업은 시간 복잡도가 0(1)으로 매우 빠릅니다. 배열 구조의 삽입 및 삭제 작업이 필요합니다. 표면적으로는 여전히 목록이지만 Redis의 기본 목록 구현은 단순한 이중 연결 목록으로 제한되지 않습니다.

    • 데이터 양이 적을 경우 기본 저장 구조는 ziplist(압축 목록)라고 하는 연속 메모리입니다. 데이터 양이 클 경우에는 모든 요소를 ​​밀접하게 저장하고 연속 메모리를 할당합니다. 퀵리스트(quick linked list) 구조가 됩니다.

    • 그러나 간단한 연결 목록에도 결함이 있습니다. 연결 목록의 이전 및 다음 포인터는 더 많은 메모리를 차지하고 공간을 낭비하며 메모리 조각화를 증가시킵니다. Redis 3.2부터 Redis는 ziplist와 Linked List로 구성된 하이브리드 데이터 구조 Quicklist(Quick Linked List)를 사용합니다.

    공통 명령

    명령 추가

    lpush 키 값lpush key value

    从左边插入元素(将一个或多个值插入到列表头部)

    127.0.0.1:6379> lpush ids 1
    (integer) 1
    127.0.0.1:6379> lrange ids 0 -1
    1) "1"
    127.0.0.1:6379> lpush ids 2
    (integer) 2
    127.0.0.1:6379> lrange ids 0 -1
    1) "2"
    2) "1"

    rpush key value

    从右边插入元素(将一个或多个值插入到列表的尾部(最右边))

    127.0.0.1:6379> rpush ids 3
    (integer) 3
    127.0.0.1:6379> lrange ids 0 -1
    1) "2"
    2) "1"
    3) "3"

    linsert key BEFORE|AFTER pivot value
    向某个元素前/后插入元素,返回结果为当前列表长度,注意列表不存在或者指定元素不存在列表中时,都将不执行任何操作。

    //元素3前插入0
    127.0.0.1:6379> linsert ids before 3 0
    (integer) 4
    127.0.0.1:6379> lrange ids 0 -1
    1) "2"
    2) "1"
    3) "0"
    4) "3"
    //元素3后插入0
    127.0.0.1:6379> linsert ids after 3 4
    (integer) 5
    127.0.0.1:6379> lrange ids 0 -1
    1) "2"
    2) "1"
    3) "0"
    4) "3"
    5) "4"

    查询命令

    lrange key start end
    获取列表中指定范围内的元素列表;若start值大于列表end值则返回空列表
    如上已经展示过了

    lindex key index
    获取列表指定索引下标的元素

    127.0.0.1:6379> lindex ids 0
    "2"
    127.0.0.1:6379> lindex ids -1
    "4"

    llen key
    获取列表长度;列表不存在则返回0

    127.0.0.1:6379> llen ids
    (integer) 5

    弹出/删除命令

    lpop key
    从列表左侧弹出元素并返回头部元素

    127.0.0.1:6379> lpop ids
    "2"
    127.0.0.1:6379> lrange ids 0 -1
    1) "1"
    2) "0"
    3) "3"
    4) "4"

    rpop key
    从列表右侧弹出元素并返回尾部元素

    127.0.0.1:6379> rpop ids
    "4"
    127.0.0.1:6379> lrange ids 0 -1
    1) "1"
    2) "0"
    3) "3"

    lrem key count value
    从列表中找到等于value的元素进行删除,根据count的不同分为三种情况:
    count > 0,从表头开始向表尾,移除数量为count个元素;
    count count = 0,移除表中所有与 value 相等的值

    127.0.0.1:6379> lrem ids 0 3
    (integer) 1
    127.0.0.1:6379> lrange ids 0 -1
    1) "1"
    2) "0"

    ltrim key start end
    对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除

    127.0.0.1:6379> ltrim ids 0 0
    OK
    127.0.0.1:6379> lrange ids 0 -1
    1) "1"

    修改命令

    lset key index value
    왼쪽부터 요소 삽입(목록의 선두에 하나 이상의 값 삽입)

    127.0.0.1:6379> lset ids 0 0
    OK
    127.0.0.1:6379> lrange ids 0 -1
    1) "0"

    rpush 키 값

    오른쪽에서 요소 삽입(목록의 꼬리(가장 오른쪽)에 하나 이상의 값 삽입)
    rrreee

    linsert key BEFORE|AFTER 피벗 값

    요소로 전달/요소 삽입 후 반환 결과는 현재 목록 길이입니다. 목록이 없거나 지정된 요소가 목록에 없으면 작업이 수행되지 않습니다.
    rrreee
    쿼리 명령

    lrange key start end

    목록에서 지정된 범위 내의 요소 목록을 가져옵니다. 시작 값이 목록의 끝 값보다 크면 빈 목록이 생성됩니다. 반환됩니다

    위와 같이redis의 list 데이터 타입에 관련된 명령어 분석 및 사용법

    lindex 키 인덱스

    목록의 지정된 인덱스 첨자에서 요소를 가져옵니다.redis의 list 데이터 타입에 관련된 명령어 분석 및 사용법rrreee

    llen 키

    목록의 길이를 가져옵니다. 목록이 없으면 0
    rrreee

    Pop/delete 명령

    redis의 list 데이터 타입에 관련된 명령어 분석 및 사용법lpop 키

    를 반환합니다. 목록 왼쪽에서 요소를 팝하고 헤드 요소를 반환합니다.

    rrreeeredis의 list 데이터 타입에 관련된 명령어 분석 및 사용법rpop key

    목록 오른쪽에서 요소를 팝하고 꼬리 요소를 반환합니다

    rrreee

    lrem 키 개수 값

    목록에서 value와 같은 요소를 찾아서 삭제합니다. 는 개수에 따라 세 가지 상황으로 나뉩니다.

    count > 0, 테이블 끝에서 시작하여 count 요소 제거

    count count = 0, 테이블의 값과 동일한 모든 값 제거 🎜rrreee🎜ltrim key start end 🎜목록 자르기, 즉 목록만 삭제 지정된 범위 내의 요소를 유지하고 지정된 범위 내에 없는 요소는 삭제됩니다🎜rrreee🎜수정 명령🎜🎜lset 키 인덱스 값🎜지정된 첨자가 있는 요소의 값을 수정하고 다음으로 설정합니다. value🎜rrreee🎜팝업 차단 명령🎜🎜blpop key [key …] timeout🎜목록의 첫 번째 요소를 제거하고 가져옵니다. 목록에 요소가 없으면 차단됩니다. 목록은 시간 초과(초 단위)될 때까지 기다립니다. ) 또는 팝 가능한 요소가 발견되었습니다🎜🎜brpop key [key …] timeout🎜 목록의 마지막 요소를 제거하고 가져옵니다. 목록에 요소가 없으면 대기 시간이 초과될 때까지 목록이 차단됩니다. 팝업 요소가 발견되었습니다. 🎜데모: 🎜3개의 리드 연결 창을 엽니다. 첫 번째는 blpop을 실행하고, 두 번째는 brpop을 실행하고, 세 번째는 add를 실행합니다. 🎜실행 후 여기에서 Windows 1과 2가 차단된 것을 볼 수 있습니다. 이는 ids에 요소가 없기 때문입니다 🎜🎜🎜🎜🎜🎜🎜🎜Window 3은 추가를 실행합니다: lpush ids 1 2 3 4 5 6🎜Windows 1과 2에서 해당 요소가 즉시 나타나는 것을 볼 수 있습니다: 🎜🎜 🎜🎜🎜🎜🎜🎜애플리케이션 시나리오 🎜🎜메시지 대기열: lpop 및 rpush(또는 반대로 lpush 및 rpop)는 대기열 기능을 구현할 수 있습니다. 🎜🎜 좋아요 목록, 댓글 목록 및 친구 서클의 순위 목록: lpush 명령 및 lrange 명령은 lpush 명령을 통해 매번 최신 목록 기능을 구현할 수 있습니다. 목록에 새 요소를 삽입한 다음 lrange 명령을 통해 최신 요소 목록을 읽습니다. 🎜

    위 내용은 redis의 list 데이터 타입에 관련된 명령어 분석 및 사용법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제