Redisコマンドの詳細:Streams

5408 ワード

Redis5.0は新しいデータ構造のStreamsを迎えています.知らない人は先に前文を読むことができます.今日はStreamsに関するコマンドを紹介します.
XACK
最新バージョン:5.0.0
時間複雑度:O(1)
使用法:XACK keyグループID[ID...]
このコマンドは、消費者グループのpending entriesリストの要素を削除するために使用されます.通常、XREADGROUPコマンドまたは消費者がXCLAIMコマンドを呼び出すと、1つのメッセージがブロックされ、PELに併存し、ブロックされたメッセージが消費者に送信されると、サーバはメッセージが処理されるかどうかを知らない.
消費者がメッセージの消費に成功すると、XACKコマンドが呼び出され、サーバはメッセージをPELから削除し、メモリを解放します.
XADD
最新バージョン:5.0.0
時間複雑度:O(1)
指定したstreamに要素を追加します.keyが存在しない場合は、新しいstreamを作成します.
entryは一連のfield-value対からなり,記憶順序はユーザの追加順序によって決定される.XADDコマンドはstreamにデータを追加する唯一のコマンドです.データを削除するコマンドにはXDELとXTRIMがあります.
streamではentry IDが一意のIDです.XADDコマンドでIDパラメータが*の場合、一意IDが自動的に生成されます.しかし、本番環境ではあまり使われていません.通常、フォーマットの良い一意のIDを指定する必要があります.
デフォルトのID生成ポリシーは、「Unixミリ秒タイムスタンプ-同じミリ秒値内のシリアル番号」です.
ユーザがIDを明示的に指定する場合、最小値は0〜1であり、IDはインクリメントされなければならない.
MAXLENを使用してstreamの最大要素数を指定できます.
1XADD mystream MAXLEN ~ 1000 * ... entry fields here ..

上の波線は、厳密な制限ではなく1000個でも数十個でもよいことを示しています.
XCLAIM
最新バージョン:5.0.0
時間複雑度:O(log N)
使用法:XCLAIM key group consumer min-idle-time ID[ID...][IDLE ms][TIME ms-unix-time][RETRYCOUNT count][FORCE][JUSTID]
このコマンドはpendingメッセージの所有権を変更するために使用され、新しいownerはコマンドパラメータのconsumerです.
コマンドの使用シーンは次のとおりです.
  • 消費者関連stream
  • 消費者Aは、XREADGROUPを介してメッセージ
  • を読み出す.
  • このメッセージはPELに追加され、指定された消費者に送信されるが、
  • を確認するためにXACKコマンドは呼び出されない.
  • この時消費者は突然
  • を切った.
  • 他の消費者は、XPENDINGコマンドを使用して処理対象メッセージのリストをチェックし、これらのコマンドを処理し続けるために、XCLAIMコマンドを使用してこれらのメッセージの所有者を変更します.

  • 次に、コマンドの各オプションについて説明します.
  • IDLE:メッセージの空き時間を設定します.デフォルトは0です.メッセージは、アイドル時間がIDLEより大きい場合にのみ受信されます.
  • TIME:IDLEと同じですが、絶対時間
  • です.
  • RETRYCOUNT:再試行回数を設定します.通常、XCLAIMはこの値を変更しません.通常、XPENDINGコマンドで使用され、長い間処理されていないメッセージを発見するために使用されます.
  • FORCE:指定されたIDがクライアントのPELに割り当てられていない場合でも、PELに処理対象メッセージを作成します.
  • JUSTID:受領したメッセージID配列のみを返し、実際のメッセージは返さない.

  • XDEL
    最新バージョン:5.0.0
    時間複雑度:O(1)
    streamのentryを削除し、削除の数を返します.
    XGROUP
    最新バージョン:5.0.0
    時間の複雑さ:各サブコマンドはO(1)
    このコマンドはstream関連の消費者グループを管理するために使用されます.XGLOUPコマンドを使用すると、次のことができます.
  • streamに関連付けられた消費者グループ
  • を作成する
  • 消費者グループ
  • を破棄
  • 指定消費者
  • を消費者グループから削除する.
  • 消費者グループのlast delivered ID
  • を設定する
    新しいコンシューマグループを作成するコマンドは、次のとおりです.
    1XGROUP CREATE mystream consumer-group-name $
    

    最後のパラメータはstreamで渡された最後のIDであり、$を使用してこの消費者グループが新しい要素しか取得できないことを示します.
    消費者グループを破棄するコマンドは、次のとおりです.
    1XGROUP DESTROY mystream some-consumer-group
    

    消費者グループにアクティブな消費者が存在し、メッセージを待つ場合でも削除されるため、このコマンドを実行するには特に慎重にする必要があります.
    指定された消費者を削除するコマンドは、次のとおりです.
    1XGROUP DELCONSUMER mystream consumer-group-name myconsumer123
    

    新しいconsumerの名前が言及されると、自動的に消費者が作成されます.消費者が使用しなくなった場合、削除することができ、上記のコマンドは、削除される前に消費者が所有していた処理対象メッセージに戻る.
    last delivered IDを設定するコマンドは、次のとおりです.
    1XGROUP SETID mystream my-consumer-group 0
    

    最後に、構文を覚えていない場合は、コマンドを使用します.
    1XGROUP HELP
    

    XINFO
    最新バージョン:5.0.0
    時間複雑度:O(N)、NはCONSUMERSとGROUPSが返すitem数
    使用法:XINFO[CONSUMMERS key groupname][GROUPS key][STREAM key][HELP]
    このコマンドはstreamと関連する消費者グループの異なる情報を返すために使用されます.3つの形式があります
  • XINFO STREAMこのコマンドはstreamの汎用情報
  • を返す.
  • XINFO GROUPSこのコマンドはstream関連の消費者グループの情報
  • を得るために使用される.
  • XINFO CONSUMERSこのコマンドは、指定された消費者グループの消費者リスト
  • に戻る.
    XLEN
    最新バージョン:5.0.0
    時間複雑度:O(1)
    streamのentry数を返します.キーが存在しない場合は0を返します.長さ0のstreamの場合、Redisは関連する消費者グループが存在する可能性があるため削除されません.
    XPENDING
    最新バージョン:5.0.0
    時間複雑度:O(N)、Nは返される要素の数
    使用法:XPENDING key group[start end count][consumer]
    消費者グループを通じてデータをキャプチャしますが、これらのデータを確認するわけではありません.
    XPENDINGコマンドは、消費者グループがアクティブなクライアント、消費待ちメッセージ、または空きメッセージがあるかどうかを確認するために、処理対象メッセージリストをチェックするインタフェースです.このコマンドは通常、XCLAIMとともに使用され、長い間処理されていないメッセージを処理するために使用されます.
    このコマンドの戻り値は次のとおりです.
    1> XPENDING mystream group55 - + 10
    21) 1) 1526984818136-0
    3   2) "consumer-123"
    4   3) (integer) 196415
    5   4) (integer) 1
    

    次のような機能があります.
  • メッセージID
  • メッセージを取得して確認する消費者名
  • .
  • 前回のメッセージが消費者に伝達されてから経過するミリ秒数
  • このメッセージが伝達する回数
  • .
    XRANGE
    最新バージョン:5.0.0
    時間複雑度:O(N)、Nは返される要素の数
    使用法:XRANGE key start end[COUNT count]
    このコマンドはstreamで指定されたID範囲のデータを返すために使用され、最小および最大IDを-および+で表すことができる.IDは不完全なIDとして指定することもでき、すなわちUnixタイムスタンプのみを指定すれば、指定した時間範囲内のデータを取得することができる.
    XREAD
    最新バージョン:5.0.0
    時間複雑度:O(N)、Nは返される要素の数
    使用法:XREAD[COUNT count][BLOCK milliseconds]STREAMskey[key...]ID[ID...]
    1つ以上のstreamからデータを読み出し、呼び出し元レポートの最後の受信IDよりもIDが大きいエントリのみを返す.
    BLOCKアイテムは、ブロック時間の長さを指定するために使用されます.STREAMアイテムは、streamとIDを指定するために最後に使用する必要があります.
    XREADGROUP
    最新バージョン:5.0.0
    時間複雑度:O(log(N)+M)、Nは返される要素の数、Mは定数です.
    使用法:XREADGROUP GROUPグループコンsumer[COUNT count][BLOCK milliseconds]STREIMskey[key...]ID[ID...]
    XREADGROUPはXREADの特殊バージョンであり、消費者グループをサポートしている.
    XREVRANGE
    最新バージョン:5.0.0
    時間複雑度:O(log(N)+M)、Nは返される要素の数、Mは定数です.
    このコマンドとXRANGEの唯一の違いは、順序が逆であることです.
    XTRIM
    最新バージョン:5.0.0
    時間複雑度:O(log(N)+M)、Nは返される要素の数、Mは定数です.
    使用法:XTRIM key MAXLEN[~]count
    このコマンドは、ストリームが指定された数のアイテムを切り取るために使用します.このコマンドは多様なポリシーを受け入れるように設計されているが,現在はMAXLENの1つしか実現されていない.
    streamの最新の1000個のアイテムに切り取るには、次の手順に従います.
    1XTRIM mystream MAXLEN 1000
    

    効率を向上させるには、次の形式を使用します.
    1XTRIM mystream MAXLEN ~ 1000
    

    ~は、ユーザが正確な1000個の項目を必要とせず、数十個を多く出すことができるが、1000を下回ってはならないことを示す.