redis学習ノート5−リストタイプ−

3136 ワード

リストには、リストの両端に要素を追加したり、リストのクリップを取得したりする規則的な文字列リストが格納されます.
リストタイプの内部は「double linked list」で実現されるため、リストの両端に要素を追加する時間の複雑さはO(1)である.
//コマンド操作
1.リストの左端に要素を追加
127.0.0.1:6379> lpush numbers 1
(integer) 1                    #                
127.0.0.1:6379> lpush numbers 2
(integer) 2
127.0.0.1:6379> lpush numbers 3
(integer) 3
127.0.0.1:6379> lpush numbers 4 5  #         
(integer) 5

説明:上記リストの左端がリストに挿入されたストレージはこのように配列されています.
[5, 4, 3, 2, 1]
--------------->
2.リストの右端に要素を追加
127.0.0.1:6379> rpush numbers -1
(integer) 6
127.0.0.1:6379> rpush numbers -2 -3 -4 -5
(integer) 10
説明:
上記のリストの左端がリストに挿入されたストレージは、このように配列されています.
[-1, -2, -3, -4, -5]
<--------------------
3.両端から要素をポップアップ
127.0.0.1:6379> lpop numbers
"5"	#        
127.0.0.1:6379> rpop numbers
"-5"

注意:lpush+lpop(rpush+rpop)と組み合わせて「スタック」の操作をシミュレートします.lpush+rpop(rpush+lpop)を組み合わせて「キュー」操作をシミュレートします.  4. リスト内の要素の数を取得
127.0.0.1:6379> llen numbers
(integer) 8
5. リストクリップを取得
127.0.0.1:6379> lrange numbers 0 7
1) "4"
2) "3"
3) "2"
4) "1"
5) "-1"
6) "-2"
7) "-3"
8) "-4"
127.0.0.1:6379> lrange numbers -2 -1
1) "-3"
2) "-4"
127.0.0.1:6379> lrange numbers 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
5) "-1"
6) "-2"
7) "-3"
8) "-4"
6. リストから指定した値を削除
説明:削除操作は少し複雑です.
コマンドテンプレート:
lrem key count value
説明:リスト内の前count個の値がvalueの要素を削除し、戻り値は実際に削除した要素の数です.count値によってlremコマンドの実行方法が異なります.
1)count>0で、リストの左側から前のcount個の値がvalueの要素を削除します.
2)count<0,リスト右側から前|count|個の値がvalueの要素を削除する.
3)count=0、valueのすべての値を持つ要素を削除します.
127.0.0.1:6379> lrange numbers 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
5) "-1"
6) "-2"
7) "-3"
8) "-4"
127.0.0.1:6379> lrem numbers -1 2   #   ,     ,  1   2     。
(integer) 1
127.0.0.1:6379> lrange numbers 0 -1
1) "4"
2) "3"
3) "1"
4) "-1"
5) "-2"
6) "-3"
7) "-4"

7.指定したインデックスの要素値の取得/設定
127.0.0.1:6379> lindex numbers 0
"4"
127.0.0.1:6379> lindex numbers -1
"-4"
127.0.0.1:6379> lset numbers 0 5
OK
127.0.0.1:6379> lindex numbers 0
"5"

8.リスト指定フラグメントのみ保持
127.0.0.1:6379> lrange numbers 0 -1
1) "5"
2) "3"
3) "1"
4) "-1"
5) "-2"
6) "-3"
7) "-4"
127.0.0.1:6379> ltrim numbers 1 2
OK
127.0.0.1:6379> lrange numbers 0 -1
1) "3"
2) "1"

9.リストに要素を挿入
127.0.0.1:6379> linsert numbers after 1 18
(integer) 3
127.0.0.1:6379> lrange numbers 0 -1
1) "3"
2) "1"
3) "18"
127.0.0.1:6379> linsert numbers before 1 0
(integer) 4
127.0.0.1:6379> lrange numbers 0 -1
1) "3"
2) "0"
3) "1"
4) "18"