NoSQLデータベースのRedisデータベース管理(listタイプ)


3.listタイプと操作
Listはチェーンテーブル構造であり、主な機能はpush、pop、1つの範囲のすべての値を取得するなどであり、操作keyはチェーンテーブルの名前として理解される.Redisのlistタイプは、実は各サブ要素がstringタイプの双方向チェーンテーブルです.削除要素をpush、pop操作でチェーンテーブルのヘッダまたはテールから追加することができ、listはスタックとしてもキューとしても使用できます.
lpush:key対応listのヘッダに文字列要素を追加します.
redis 127.0.0.1:6379> lpush mylist "world"
(integer) 1
redis 127.0.0.1:6379> lpush mylist "hello"
(integer) 2
redis 127.0.0.1:6379> lrange mylist 0 -1
1) "hello"
2) "world"

0は頭の最初の要素を表し、-1は尾の最初の要素を表します.lrange mylist 0-1は、listの最初の要素から最後の最初の要素まで順次取り出される、すなわち、最初の要素が最後の要素に取り出されることを示す.
rpush:key対応listの末尾に文字列要素を追加します.
redis 127.0.0.1:6379> rpush mylist2 "world"
(integer) 1
redis 127.0.0.1:6379> rpush mylist2 "hello"
(integer) 2
redis 127.0.0.1:6379> lrange mylist2 0 -1
1) "world"
2) "hello"

linsert:key対応listの特定の場所の前または後に文字列を追加する
redis 127.0.0.1:6379> rpush mylist3 "world"
(integer) 1
redis 127.0.0.1:6379> linsert mylist3 before "world "hello"
(integer) 2
redis 127.0.0.1:6379> lrange mylist3 0 -1
1) "hello"
2) "world"

lset:listで指定した下付き要素の値を設定する
redis 127.0.0.1:6379> rpush mylist4 "hello"
(integer) 1
redis 127.0.0.1:6379> lset mylist4 0 "world"
OK
redis 127.0.0.1:6379> lrange mylist4 0 -1
1) "world"

lrem:key対応listからvalueと同じn個の要素を削除します(n<0は末尾から削除し、n=0はすべて削除します).
redis 127.0.0.1:6379> rpush mylist5 "hello"
(integer) 1
redis 127.0.0.1:6379> rpush mylist5 "hello"
(integer) 2
redis 127.0.0.1:6379> lrem mylist5 1 "hello"  // mylist5   1  hello     
(integer) 1  //         

ltrim:指定keyの値範囲内のデータを保持する
redis 127.0.0.1:6379> rpush mylist8 "one"
(integer) 1
redis 127.0.0.1:6379> rpush mylist8 "two"
(integer) 2
redis 127.0.0.1:6379> ltrim mylist8 1 -1
(integer) 1
redis 127.0.0.1:6379> lrange mylist8 0 -1
1) "two"

lpop:listのヘッダから要素を削除し、削除要素を返します.
redis 127.0.0.1:6379> lrange mylist 0 -1
1) "hello"
2) "world"
redis 127.0.0.1:6379> lpop mylist
"hello"
redis 127.0.0.1:6379> lrange mylist 0 -1
1) "world"

rpop:listの末尾から要素を削除し、削除要素を返します.
redis 127.0.0.1:6379> lrange mylist2 0 -1
1) "hello"
2) "world"
redis 127.0.0.1:6379> rpop mylist2
"world"
redis 127.0.0.1:6379> lrange mylist2 0 -1
1) "hello"

listsタイプ
rpoplpush:最初のlistの末尾から要素を除去し、2番目のlistのヘッダに追加します.
redis 127.0.0.1:6379> lrange mylist5 0 -1
1) "three"
2) "hello"
redis 127.0.0.1:6379> lrange mylist6 0 -1
1) "hello"
2) "foo"
redis 127.0.0.1:6379> rpoplpush mylist5 mylist6
"hello"
redis 127.0.0.1:6379> lrange mylist5 0 -1
1) "three"
redis 127.0.0.1:6379> lrange mylist6 0 -1
1) "hello"
2) "hello"
3) "foo"

lindex:keyという名前のlistのindex位置の要素を返します.
redis 127.0.0.1:6379> lrange mylist5 0 -1
1) "three"
2) "foo"
redis 127.0.0.1:6379> lindex mylist5 0
"three"
redis 127.0.0.1:6379> lindex mylist5 1
"foo"

llen:key対応listの長さを返す
redis 127.0.0.1:6379> lrange mylist6 0 -1
1) "hello"
2) "hello"
3) "foo"
redis 127.0.0.1:6379> llen mylist6
(integer) 3

 
説明:本文は私のネット上でLAMP兄弟連李捷先生の《NoSQLデータベースのRedisデータベース管理》の学習ノートを勉強します.