redis-リストタイプコマンド操作ノート


リストの種類
コマンド#コマンド#
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 = 0LREMコマンドである場合、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コマンドは、複数のキューでデータを直感的に伝達することができる.sourcedestinationが同時になると、RPOPLPUSHコマンドはキューの最後の要素をキューの先頭に移動し続け、この特性を利用してウェブサイト監視システムを実現することができます.キューを使用して監視する必要があるウェブサイトを格納し、その後、監視プログラムはRPOPLPUSHコマンドを使用してウェブサイトを繰り返し取り出して可用性をテストします.ここでRPOPLPUSHコマンドを使用する利点は、プログラム実行中にウェブサイトリストに新しいウェブサイトを絶えず追加することができ、システム全体が拡張しやすく、複数のクライアントがキューを同時に処理できることである.
 
参照リンク:https://www.jianshu.com/p/86eee4c13645
ブックマークしおり:コレクションタイプしゅうごうたいぷ