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の最大要素数を指定できます.
上の波線は、厳密な制限ではなく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 を設定する
新しいコンシューマグループを作成するコマンドは、次のとおりです.
最後のパラメータはstreamで渡された最後のIDであり、$を使用してこの消費者グループが新しい要素しか取得できないことを示します.
消費者グループを破棄するコマンドは、次のとおりです.
消費者グループにアクティブな消費者が存在し、メッセージを待つ場合でも削除されるため、このコマンドを実行するには特に慎重にする必要があります.
指定された消費者を削除するコマンドは、次のとおりです.
新しいconsumerの名前が言及されると、自動的に消費者が作成されます.消費者が使用しなくなった場合、削除することができ、上記のコマンドは、削除される前に消費者が所有していた処理対象メッセージに戻る.
last delivered IDを設定するコマンドは、次のとおりです.
最後に、構文を覚えていない場合は、コマンドを使用します.
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とともに使用され、長い間処理されていないメッセージを処理するために使用されます.
このコマンドの戻り値は次のとおりです.
次のような機能があります.メッセージ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個のアイテムに切り取るには、次の手順に従います.
効率を向上させるには、次の形式を使用します.
~は、ユーザが正確な1000個の項目を必要とせず、数十個を多く出すことができるが、1000を下回ってはならないことを示す.
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です.
コマンドの使用シーンは次のとおりです.
次に、コマンドの各オプションについて説明します.
XDEL
最新バージョン:5.0.0
時間複雑度:O(1)
streamのentryを削除し、削除の数を返します.
XGROUP
最新バージョン:5.0.0
時間の複雑さ:各サブコマンドはO(1)
このコマンドはstream関連の消費者グループを管理するために使用されます.XGLOUPコマンドを使用すると、次のことができます.
新しいコンシューマグループを作成するコマンドは、次のとおりです.
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つの形式があります
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
次のような機能があります.
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を下回ってはならないことを示す.