Redis 入門 - Redis ストリーム

元のテキストのアドレスが更新され、読書効果が向上しました。

Redis 入門 - Redis Stream | CoderMast プログラミング マストRedis 入門 - Redis Stream Redis Stream は、Redis バージョン 5.0 で新しく追加されたデータ構造です。Redis Streamは主にメッセージキュー(MQ、Message Queue)に使用されます。Redis自体はメッセージキューの機能を実現するためにRedisパブリッシュサブスクリプション(pub/sub)を持っていますが、メッセージを永続化することができず、ネットワーク切断やRedisのダウンタイムなどが発生するとメッセージが破棄されてしまうというデメリットがあります。簡単に言うと、パブリッシュとサブスクライブ (pub/sub) はメッセージを配布できますが、履歴メッセージを記録することはできません。Redis Stream は、メッセージの永続化とマスターバックアップのレプリケーション機能を提供し、どのクライアントがいつでもデータにアクセスできるようにし、各クライアントのアクセス場所を記憶し、メッセージが失われないようにします。https://www.codermast.com/database/redis/redis-stream.html

Redis Stream は、Redis バージョン 5.0 で新しく追加されたデータ構造です。

Redis Streamは主にメッセージキュー(MQ、Message Queue)に使用されます。Redis自体はメッセージキューの機能を実現するためにRedisパブリッシュサブスクリプション(pub/sub)を持っていますが、メッセージを永続化することができず、ネットワーク切断やRedisのダウンタイムなどが発生するとメッセージが破棄されてしまうというデメリットがあります。

簡単に言うと、パブリッシュとサブスクライブ (pub/sub) はメッセージを配布できますが、履歴メッセージを記録することはできません。

Redis Stream は、メッセージの永続化とマスターバックアップのレプリケーション機能を提供し、どのクライアントがいつでもデータにアクセスできるようにし、各クライアントのアクセス場所を記憶し、メッセージが失われないようにします。

Redis Stream の構造は次のとおりです。これには、追加されたすべてのメッセージをまとめたメッセージ リストがあります。各メッセージには一意の ID と対応するコンテンツがあります。

 

各ストリームには、Redis のキーとなる一意の名前があり、最初に xadd コマンドを使用してメッセージを追加するときに自動的に作成されます。

上図の分析:

  • コンシューマ グループ: XGROUP CREATE コマンドを使用して作成されたコンシューマ グループ。コンシューマ グループには複数のコンシューマ (コンシューマ) があります。
  • last_delivered_id: カーソル。各コンシューマ グループにはカーソル last_delivered_id があり、メッセージを読むコンシューマはカーソル last_delivered_id を前方に移動します。
  • pending_ids : コンシューマ (Consumer) のステータス変数。コンシューマの未確認 ID を維持するために使用されます。pending_ids には、クライアントが現在読み取っているメッセージが記録されますが、ack (Acknowledge 文字: 確認文字) はありません。

メッセージキュー関連のコマンド:

  • XADD - 最後にメッセージを追加します
  • XTRIM - ストリームをトリムして長さを制限します
  • XDEL - メッセージの削除
  • XLEN - ストリームに含まれる要素の数、つまりメッセージの長さを取得します。
  • XRANGE - メッセージリストを取得し、削除されたメッセージを自動的にフィルタリングします
  • XREVRANGE - ID が大きいものから小さいものまで、逆方向にメッセージのリストを取得します。
  • XREAD - ブロッキングまたは非ブロッキング方法でメッセージのリストを取得します

コンシューマ グループ関連のコマンド:

  • XGROUP CREATE - コンシューマ グループを作成します
  • XREADGROUP GROUP - コンシューマ グループ内のメッセージを読み取ります
  • XACK - メッセージを「処理済み」としてマークします
  • XGROUP SETID - コンシューマ グループの新しい最後に配信されたメッセージ ID を設定します。
  • XGROUP DELCONSUMER - コンシューマを削除します
  • XGROUP DESTROY - コンシューマ グループを削除します
  • XPENDING - 保留中のメッセージに関する情報を表示します。
  • XCLAIM - メッセージの所有権を譲渡する
  • XINFO - ストリームとコンシューマ グループに関する情報を表示します。
  • XINFO GROUPS - 消費者グループに関する情報を出力します。
  • XINFO STREAM - ストリーム情報の印刷

# XADD

XADD を使用してメッセージをキューに追加します。指定されたキューが存在しない場合は、XADD 構文形式でキューを作成します。

XADD key ID field value [field value ...]

  • key : キューの名前。キューが存在しない場合は作成します。
  • ID: メッセージ ID。Redis によって生成されていることを示すために * を使用します。これはカスタマイズ可能ですが、増分は独自に保証する必要があります。
  • フィールド値: レコード。

#エクストリム

XTRIM を使用してストリームをトリミングし、長さと構文形式を制限します。

XTRIM key MAXLEN [~] count

  • キー : キュー名
  • MAXLEN : 長さ
  • カウント: 数値

#XDEL_ _

XDEL を使用してメッセージを削除します。構文形式は次のとおりです。

XDEL key ID [ID ...]

  • キー: キュー名
  • ID: メッセージID

#XLEN _

XLEN を使用して、ストリームに含まれる要素の数、つまりメッセージの長さを取得します。構文形式は次のとおりです。

XLEN key

  • キー: キュー名

#XRANGE _

XRANGE を使用してメッセージ リストを取得すると、削除されたメッセージは自動的にフィルターされます。構文形式は次のとおりです。

XRANGE key start end [COUNT count]

  • キー : キュー名
  • start : 開始値、- は最小値を意味します
  • end : 終了値、+ は最大値を意味します
  • カウント: 数値

#XREVRANGE _

XREVRANGE を使用してメッセージ リストを取得すると、削除されたメッセージは自動的にフィルタリングされます。構文形式は次のとおりです。

XREVRANGE key end start [COUNT count]

  • キー : キュー名
  • end : 終了値、+ は最大値を意味します
  • start : 開始値、- は最小値を意味します
  • カウント: 数値

#XREAD _

XREAD を使用して、ブロッキングまたは非ブロッキング方法でメッセージ リストを取得します。構文形式は次のとおりです。

XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] id [id ...]

  • カウント: 数値
  • milliseconds : オプション、ブロックするミリ秒数。設定されていない場合は、非ブロッキング モードになります。
  • キー : キュー名
  • id : メッセージID

#Xグループ作成

XGROUP CREATE を使用してコンシューマ グループを作成します。構文形式は次のとおりです。

XGROUP [CREATE key groupname id-or-$] [SETID key groupname id-or-$] [DESTROY key groupname] [DELCONSUMER key groupname consumername]

  • key : キューの名前。キューが存在しない場合は作成します。
  • グループ名: グループ名。
  • $ : 端からの消費を示し、新しいメッセージのみが受け入れられ、現在の Stream メッセージはすべて無視されます。

最初から消費する:

 

XGROUP CREATE mystream consumer-group-name 0-0 最後から消費します:

XGROUP CREATE mystream consumer-group-name $

#XREADGROUPグループ

XREADGROUP GROUP を使用してコンシューマ グループ内のメッセージを読み取ります。構文形式は次のとおりです。

XREADGROUP GROUP group consumer [COUNT count] [BLOCK milliseconds] [NOACK] STREAMS key [key ...] ID [ID ...]

  • グループ : コンシューマグループ名
  • Consumer : コンシューマ名。
  • count : 読み取り数。
  • milliseconds : ブロックするミリ秒数。
  • key : キュー名。
  • ID: メッセージ ID。 XREADGROUP GROUP consumer-group-name consumer-name COUNT 1 STREAMS mystream >

おすすめ

転載: blog.csdn.net/qq_33685334/article/details/131252599