redis-リストタイプコマンド操作ノート
4339 ワード
リストの種類
コマンド#コマンド#
1.リストの両端に要素を追加
2.リストの両端から要素をポップアップする
3.リスト内の要素の個数を取得する
キーが存在しない場合、
4.リストクリップを取得
5.リストで指定した値を削除
(1)
(2)
(3)
6.指定したインデックスの要素値の取得/設定
7.リスト指定フラグメントのみ保持
8.リストに要素を挿入する
9.あるリストから別のリストへ要素を移動
リストタイプをキューとして使用する場合、
参照リンク:https://www.jianshu.com/p/86eee4c13645
ブックマークしおり:コレクションタイプしゅうごうたいぷ
コマンド#コマンド#
1.リストの両端に要素を追加
LPUSH key value [value …] # LPUSH , 。
# LPUSH , :
redis> LPUSH numbers 2 3
(integer) 3
RPUSH key value [value …] #
RPUSH , LPUSH :
redis> RPUSH numbers 0 −1
(integer) 5
2.リストの両端から要素をポップアップする
LPOP key
RPOP key
3.リスト内の要素の個数を取得する
LLEN key
キーが存在しない場合、
LLEN
は0を返します.redis> LLEN numbers
(integer) 3
4.リストクリップを取得
LRANGE key start stop
redis> LRANGE numbers 0 2
1) "2"
2) "1"
3) "0"
LRANGE LPOP , LRANGE slice LRANGE ,
LRANGE , , "−1" ,"-2" , :
redis> LRANGE numbers -2 -1
1) "1"
2) "0"
,LRANGE numbers 0 -1 。 。
1. start stop , 。
2. stop , :
redis> LRANGE numbers 1 999
1) "1"
2) "0"
5.リストで指定した値を削除
LREM key count value
LREM
コマンドは、リストの最初のcount
個の値がvalue
の要素を削除し、戻り値は実際に削除された要素の数です.count
の値によって、LREM
コマンドの実行方法が若干異なります.(1)
count > 0
の場合、LREM
コマンドは、リスト左からcount
の値がvalue
の要素を削除します.(2)
count < 0
の場合、LREM
コマンドはリストの右側から|count|
の値がvalue
の要素を削除します.(3)
count = 0
がLREM
コマンドである場合、value
の値を持つすべての要素が削除される.例:redis> RPUSH numbers 2
(integer) 4
redis> LRANGE numbers 0 -1
1) "2"
2) "1"
3) "0"
4) "2"
# "2"
redis> LREM numbers -1 2
(integer) 1
redis> LRANGE numbers 0 -1
1) "2"
2) "1"
3) "0"
6.指定したインデックスの要素値の取得/設定
LINDEX key index
LSET key index value
redis> LSET numbers 1 7
OK
redis> LINDEX numbers 1
"7"
7.リスト指定フラグメントのみ保持
LTRIM key start end
LTRIM , LRANGE 。 :
redis> LRANGE numbers 0 -1
1) "1"
2) "2"
3) "7"
4) "3"
"0"
redis> LTRIM numbers 1 2
OK
redis> LRANGE numbers 0 1
1) "2"
2) "7"
LTRIM
コマンドは、常にLPUSH
コマンドとともに使用され、リスト内の要素の数を制限します.たとえば、ログを記録するときに最近の100個のログだけを保持したい場合は、新しい要素を追加するたびにLTRIM
コマンドを呼び出すといいです.LPUSH logs $newLog
LTRIM logs 0 99
8.リストに要素を挿入する
LINSERT key BEFORE|AFTER pivot value
LINSERT
コマンドは、まず、pivot
の値を持つ要素をリストの左から右に検索し、2番目のパラメータがBEFORE
であるかAFTER
であるかに基づいて、value
をその要素の前または後ろに挿入するかを決定します.LINSERT
コマンドの戻り値は、挿入後のリストの要素数です.例は次のとおりです.redis> LRANGE numbers 0 -1
1) "2"
2) "7"
3) "0"
redis> LINSERT numbers AFTER 7 3
(integer) 4
redis> LRANGE numbers 0 -1
1) "2"
2) "7"
3) "3"
4) "0"
redis> LINSERT numbers BEFORE 2 1
(integer) 5
redis> LRANGE numbers 0 -1
1) "1"
2) "2"
3) "7"
4) "3"
5) "0"
9.あるリストから別のリストへ要素を移動
RPOPLPUSH source destination
RPOPLPUSH
は興味深いコマンドで、名前からその機能がわかります.RPOP
コマンドを先に実行してからLPUSH
コマンドを実行します.RPOPLPUSH
コマンドは、source
リストタイプキーの右側から要素をポップアップし、destination
リストタイプキーの左側に追加し、プロセス全体が原子であるこの要素の値を返します.具体的なインプリメンテーションは、疑似コードとして表すことができる.def rpoplpush ($source, $destination)
$value = RPOP $source
LPUSH $destination, $value
return $value
リストタイプをキューとして使用する場合、
RPOPLPUSH
コマンドは、複数のキューでデータを直感的に伝達することができる.source
とdestination
が同時になると、RPOPLPUSH
コマンドはキューの最後の要素をキューの先頭に移動し続け、この特性を利用してウェブサイト監視システムを実現することができます.キューを使用して監視する必要があるウェブサイトを格納し、その後、監視プログラムはRPOPLPUSH
コマンドを使用してウェブサイトを繰り返し取り出して可用性をテストします.ここでRPOPLPUSH
コマンドを使用する利点は、プログラム実行中にウェブサイトリストに新しいウェブサイトを絶えず追加することができ、システム全体が拡張しやすく、複数のクライアントがキューを同時に処理できることである.参照リンク:https://www.jianshu.com/p/86eee4c13645
ブックマークしおり:コレクションタイプしゅうごうたいぷ