>  기사  >  데이터 베이스  >  실전 전투: 샘플 코드를 통해 Redis의 list 명령에 대해 이야기해 보겠습니다.

실전 전투: 샘플 코드를 통해 Redis의 list 명령에 대해 이야기해 보겠습니다.

青灯夜游
青灯夜游앞으로
2021-12-13 09:58:204002검색

이 글에서는 Redis의 list 명령을 소개하고, 코드 예제를 통해 list 명령을 사용하는 방법을 알아보는 것이 도움이 되기를 바랍니다.

실전 전투: 샘플 코드를 통해 Redis의 list 명령에 대해 이야기해 보겠습니다.

list 데이터 구조

List 유형은 양단 연결 목록 구조이며, 용량은 2의 32승에서 1 요소를 뺀 값, 즉 40억 개가 넘습니다. 주요 기능에는 스택, 큐, 메시지 큐 및 기타 시나리오에서 일반적으로 사용되는 푸시, 팝, 요소 가져오기 등이 포함됩니다. [관련 권장 사항: Redis 동영상 튜토리얼双端链表的结构,容量是2的32次方减1个元素,即40多亿个;其主要功能有push、pop、获取元素等;一般应用在栈、队列、消息队列等场景。【相关推荐:Redis视频教程

Redis list命令实战

[l/r]push-左/右添加元素

语法:[l/r]push key value [value ...]

以头插或尾插方式插入指定key队列中一个或多个元素

127.0.0.1:6379> lpush pushkey 1 2 3
(integer) 3
127.0.0.1:6379> lpush pushkey 4
(integer) 4
127.0.0.1:6379> rpush pushkey 5
(integer) 5
127.0.0.1:6379> lrange pushkey 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
5) "5"

lrange-查询范围元素

语法: lrange key start stop

获取列表指定范围内的元素

127.0.0.1:6379> lpush products 1 2 3
(integer) 3
127.0.0.1:6379> lpush products 4 5 6
(integer) 6
127.0.0.1:6379> lrange products 0 -1
1) "6"
2) "5"
3) "4"
4) "3"
5) "2"
6) "1"

linsert-在某元素前后插入元素

语法:linsert key BEFORE|AFTER pivot value

在列表的元素前或者后插入元素

127.0.0.1:6379> lrange products 0 -1
1) "6"
2) "5"
3) "4"
4) "3"
5) "2"
6) "1"
127.0.0.1:6379> linsert products before 5 a
(integer) 7
127.0.0.1:6379> lrange products 0 -1
1) "6"
2) "a"
3) "5"
4) "4"
5) "3"
6) "2"
7) "1"
127.0.0.1:6379> linsert products after a b
(integer) 8
127.0.0.1:6379> lrange products 0 -1
1) "6"
2) "a"
3) "b"
4) "5"
5) "4"
6) "3"
7) "2"
8) "1"

llen-获取长度

语法:llen  key

获取列表长度

127.0.0.1:6379> lrange products 0 -1
1) "6"
2) "a"
3) "b"
4) "5"
5) "4"
6) "3"
7) "2"
8) "1"
127.0.0.1:6379> llen products
(integer) 8

lindex-根据下标获取元素

语法:lindex key index

通过索引获取列表中的元素

127.0.0.1:6379> lrange products 0 -1
1) "6"
2) "a"
3) "b"
4) "5"
5) "4"
6) "3"
7) "2"
8) "1"
127.0.0.1:6379> lindex products 2
"b"

lset-根据下标设置值

语法:lset key index value

通过索引设置列表元素的值

127.0.0.1:6379> lrange products 0 -1
1) "6"
2) "a"
3) "b"
4) "5"
5) "4"
6) "3"
7) "2"
8) "1"
127.0.0.1:6379> lset products 2 B
OK
127.0.0.1:6379> lrange products 0 -1
1) "6"
2) "a"
3) "B"
4) "5"
5) "4"
6) "3"
7) "2"
8) "1"

ltrim-截取元素

语法:ltrim key start end

截取队列指定区间的元素,其余元素都删除

127.0.0.1:6379> lrange products 0 -1
1) "6"
2) "a"
3) "B"
4) "5"
5) "4"
6) "3"
7) "2"
8) "1"
127.0.0.1:6379> ltrim products 0 3
OK
127.0.0.1:6379> lrange products 0 -1
1) "6"
2) "a"
3) "B"
4) "5"

lrem-移除元素

语法:lrem key count value

移除列表元素

127.0.0.1:6379> lpush test a 1 a 2 a 3 a 4  5 6
(integer) 10
127.0.0.1:6379> lrange  test 0 -1
 1) "6"
 2) "5"
 3) "4"
 4) "a"
 5) "3"
 6) "a"
 7) "2"
 8) "a"
 9) "1"
10) "a"
127.0.0.1:6379> lrem test 3 a
(integer) 4
127.0.0.1:6379> lrange  test 0 -1
1) "6"
2) "5"
3) "4"
4) "3"
5) "2"
6) "1"
7) "a"

[l/r]pop-从左/右弹出元素

语法:[l/r]pop key

从队列的头或尾弹出节点元素(返回该元素并从队列中删除)

127.0.0.1:6379> lrange  test 0 -1
1) "6"
2) "5"
3) "4"
4) "3"
5) "2"
6) "1"
127.0.0.1:6379> lpop test
"6"
127.0.0.1:6379> lrange  test 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
127.0.0.1:6379> rpop test
"1"
127.0.0.1:6379> lrange  test 0 -1
1) "5"
2) "4"
3) "3"
4) "2"

rpoplpush-移除右元素添加到另一列表左

语法:rpoplpush source destination

移除列表的最后一个元素(右),并将该元素添加到另一个列表(左)并返回

127.0.0.1:6379> lpush src 1 2 3
(integer) 3
127.0.0.1:6379> lrange src 0 -1
1) "3"
2) "2"
3) "1"
127.0.0.1:6379> lpush dst a b c
(integer) 3
127.0.0.1:6379> lrange dst 0 -1
1) "c"
2) "b"
3) "a"
127.0.0.1:6379> rpoplpush src dst
"1"
127.0.0.1:6379> lrange src 0 -1
1) "3"
2) "2"
127.0.0.1:6379> lrange dst 0 -1
1) "1"
2) "c"
3) "b"
4) "a"

b[l/r]pop-阻塞弹出左/右一个元素

语法: b[l/r]pop key1 [key2 ...] timeout

移出并获取列表的第一个或最后一个元素, 如果列表没有元素会阻塞列表直到等待超时发现]

Redis 목록 명령 연습

🎜🎜[l/r]왼쪽/오른쪽 요소 푸시 추가🎜🎜🎜구문: ​​[l/r]푸시 키 값 [값 ...] 🎜🎜헤드 삽입 또는 테일 삽입을 통해 지정된 키 대기열에 하나 이상의 요소를 삽입합니다🎜
127.0.0.1:6379> lpush list1 1 2
(integer) 2
127.0.0.1:6379> lpush list2 a b
(integer) 2
127.0.0.1:6379> lrange list1 0 -1
1) "2"
2) "1"
127.0.0.1:6379> lrange list2 0 -1
1) "b"
2) "a"
127.0.0.1:6379> blpop list1 list2 10
1) "list1"   #弹出元素所属的列表
2) "2"       #弹出元素所属的值
127.0.0.1:6379> blpop list1 list2 10
1) "list1"
2) "1"
127.0.0.1:6379> blpop list1 list2 10
1) "list2"
2) "b"
127.0.0.1:6379> blpop list1 list2 10
1) "list2"
2) "a"
127.0.0.1:6379> blpop list1 list2 10
(nil)
(10.08s)  # 列表为空的时候,就等待超时10秒
🎜🎜lrange-query 범위 요소🎜 🎜 🎜구문: lrange 키 시작 중지🎜🎜목록의 지정된 범위 내의 요소 가져오기🎜rrreee🎜🎜linsert-앞과 뒤에 요소 삽입 요소🎜🎜🎜구문: ​​linsert key BEFORE|AFTER 피벗 값🎜🎜목록의 요소 앞이나 뒤에 요소를 삽입🎜rrreee🎜🎜 llen-길이 가져오기🎜🎜🎜구문: ​​llen 키🎜🎜목록 길이 가져오기🎜rrreee🎜🎜 lindex-아래 첨자 요소를 기반으로 가져오기🎜🎜🎜구문: ​​lindex 키 인덱스🎜🎜index🎜rrreee🎜🎜lset-다음 키 인덱스 값에 따라🎜🎜🎜구문: ​​lset 키 인덱스 값🎜🎜목록 요소의 값을 index🎜rrreee🎜🎜로 설정합니다.ltrim -요소 가로채기🎜🎜🎜구문: ​​ltrim key start end🎜🎜큐의 지정된 범위에 있는 요소를 가로채고 삭제합니다. 나머지 요소🎜rrreee🎜🎜lrem-요소 제거🎜🎜🎜구문: ​​lrem 키 개수 값🎜🎜목록 요소 제거🎜 rrreee🎜🎜[l/r]왼쪽/오른쪽 팝팝 요소🎜🎜🎜구문: ​​[l/r]팝 키 code>🎜🎜큐의 헤드 또는 테일에서 노드 요소를 팝합니다(요소를 반환하고 큐에서 제거)🎜rrreee🎜🎜rpoplpush - 올바른 요소를 제거하고 왼쪽 다른 목록에 추가🎜🎜🎜구문: ​​rpoplpush 소스 대상🎜🎜은 목록의 마지막 요소(오른쪽)를 제거하고 해당 요소를 다른 목록(왼쪽)에 추가하고 🎜를 반환합니다. rrreee🎜🎜 b[l/r]pop-block 왼쪽/오른쪽에 요소 하나 팝업🎜🎜🎜 구문: b[l/r ]pop key1 [key2 ...] timeout🎜🎜이동 및 병합 목록의 첫 번째 또는 마지막 요소를 가져옵니다. 목록에 요소가 없으면 목록을 차단합니다. > 시간 초과를 기다리거나 팝업 요소를 찾을 때까지입니다. 🎜rrreee🎜더 많은 프로그래밍 관련 지식을 보려면 🎜프로그래밍 소개🎜를 방문하세요! ! 🎜

위 내용은 실전 전투: 샘플 코드를 통해 Redis의 list 명령에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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