ホームページ  >  記事  >  データベース  >  実戦:Redisのlistコマンドをサンプルコードを通して解説していきます

実戦:Redisのlistコマンドをサンプルコードを通して解説していきます

青灯夜游
青灯夜游転載
2021-12-13 09:58:203915ブラウズ

この記事では、Redis の list コマンドを紹介し、コード例を通して list コマンドの使用方法を学びます。

実戦:Redisのlistコマンドをサンプルコードを通して解説していきます

リストのデータ構造

リスト型は、両端リンクリスト構造です。 2 の 32 乗マイナス 1 要素、つまり 40 億以上の容量。主な機能にはプッシュ、ポップ、要素の取得などが含まれます。通常は スタック、キュー、メッセージ キュー で使用されます。およびその他のシナリオ。 [関連する推奨事項: Redis ビデオ チュートリアル ]

Redis リスト コマンドの実践

[l/r]左押し/要素を右側に追加

構文: [l/r]push key value [value ...]

head またはで挿入tail 指定されたキー キューに 1 つ以上の要素を挿入します

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-query range element

Syntax: 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 ピボット値

リスト内の要素の前後に要素を挿入

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-get the length

構文:

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 keyindex

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 キー インデックス値

値を設定しますインデックスによるリスト要素

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-Intercept elements

構文:

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 キー カウント値 #リスト要素を削除

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]左/右から要素をポップポップ ##構文: [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 ソース宛先

リストの最後の要素 (右) を削除し、その要素を他の A リスト (左) に追加し、

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- を返します。 1 つの要素を左/右にポップするブロック

構文: b[l/r]pop key1 [key2 ...] timeout

削除とリストの最初または最後の要素を取得します。リストに要素がない場合は、リストをブロックします

待機

がタイムアウトになるまで または を見つけるまでポップアップ要素。

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秒
プログラミング関連の知識について詳しくは、プログラミング入門

をご覧ください。 !

以上が実戦:Redisのlistコマンドをサンプルコードを通して解説していきますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。