Redis RDB ファイルを分析するための包括的なツール
背景
Redis を使用する過程で、メモリが多すぎる、帯域幅がいっぱいであるなどの問題が発生することがあります。このような問題が発生した場合は、Redis のメモリを分析する必要があります。
Redis のメモリ分析には、オンライン分析とオフライン分析の 2 種類があります。オンライン分析では、Redis サーバーに直接接続してメモリを分析するため、Redis サーバーの負荷が増加します。 これは、Redis サーバーの安定性に影響を与える可能性があります。オフライン分析は RDB バックアップ ファイルに基づいており、Redis サーバーの安定性には影響しません。使用メモリが 2GB を超える場合は、これをお勧めします。
Redis のメモリをオフラインで分析するにはどうすればよいでしょうか?オープンソースの世界では、redis-rdb-tools と rdr という 2 つのよく知られたツールが役に立ちます。
redis-rdb-tools は Python によって実装され、rdr は Golang によって実装されます。開発者がこれら 2 つの言語に詳しくなく、これらの言語に基づいて一部の機能を拡張したい場合、プロセスはより困難になる可能性があります。次に、C# 開発者が拡張しやすい、C# によって実装された別のオフライン分析ツールを紹介します。
rdb-ツール
rdb-tools は、c# で実装された redis rdb ファイルを解析/分析するツールです。
これは 2 つの部分で構成されます:
- 自分でカスタマイズできるパーサー ライブラリ。
- コマンドラインの基本的な使用法を分析できる分析 CLI ツール
パーサー ライブラリは net6.0 に基づいています。 簡単に拡張できるようにします。
cli ツールも net6.0 に基づいています。 これは、コマンドライン API を使用して構築され、ランタイム依存関係なしでバイナリ ファイルにパッケージ化できます。
CLI ツールの使用
rdb-cli をインストールするには 2 つの方法があります。 .
<オル>dotnet tool install --global rdb-cli を使用できます。 ここでは最初の方法を示します。
ダウンロードして解凍すると、rdb-cli という名前の実行可能ファイルが得られます。 .
「./rdb-cli -h」と入力します。 ヘルプ情報を取得します。

ご覧のとおり、使用できるコマンドは 2 つあります。最も重要なコマンドは記憶です。 .

ヘルプ情報から、RDB ファイルといくつかの特定のオプションを指定する必要があることがわかります。
簡単で一般的な例は次のとおりです。
./rdb-cli memory /tmp/test/demo.rdb -ot html このコマンドは rdb ファイルを分析し、分析結果は HTML 形式で表示されます。
以下のスクリーンショットは、実行コマンドの出力を示しています。 2.1 GB の RDB ファイルの分析にかかる時間はわずか 32 秒であり、比較的高速であることがわかります。

詳細な HTML レポート出力(/tmp/test/res.html)
見てみましょう。




HTML 結果には 3 つの部分が含まれます。
最初の部分は、RDB バージョン情報、Redis バージョン情報、合計メモリ、合計キー数などの基本情報です。
2 番目の部分はいくつかのヒストグラムで、主にさまざまなデータ型のメモリと量の分布、および有効期限のメモリと量の分布です。
3 番目の部分は、トップ キー プレフィックス リスト、トップ ビッグ キー リスト、トップ ストリーム リスト、関数リスト (redis 7.0) を含むいくつかのテーブルです。
さらに、すべての情報を分析するのではなく、いくつかの条件をフィルタリングしたい場合は、別のパラメータ オプションを指定できます。
2 つの例:
1. DB 9 と DB 10 のみを分析したい場合:
./rdb-cli memory /tmp/test/demo.rdb -ot html --db 9 --db 10
2. ハッシュと文字列タイプのみを分析したい場合:
./rdb-cli memory /tmp/test/demo.rdb -ot html --type string --type hash 2 ~ 8 GB の RDB ファイルの分析は参考のために補足されています。

上記の CLI ツールは、ニーズに完全には適していない可能性があります。現時点では、解析クラス ライブラリに基づいてカスタマイズ要件をカスタマイズできます。
パーサー ライブラリの使用法
RDBParse をインストールします 最初は nuget からパッケージを作成します。
dotnet add package RDBParse
次に、IReaderCallback を実装するための実装クラスを追加する必要があります。 インターフェース。
次に、BinaryReaderRDBParser の新しいインスタンスを作成します。 クラス。
最後に、Parse を呼び出します。 BinaryReaderRDBParser のメソッド のインスタンス。
たとえば、以下のコードに続きます。
public class MyReaderCallBack : IReaderCallback
{
}
var path = "/yourpath/your.rdb"
var cb = new MyReaderCallBack();
var parser = new RDBParser.BinaryReaderRDBParser(cb);
parser.Parse(path); 概要
この記事では、C# ベースの RDB 分析ツールを紹介し、その基本的な使用法とカスタマイズ方法を理解します。
これがお役に立てば幸いです!
リファレンス
- rdb-tools github ページ
- redis の rdb.c
- rdr github ページ
- redis-rdb-tools github ページ
-
LangChain と Upstash Redis を使用したチャット履歴の永続化
LangChain は、人間と AI の間で会話を行うためのシンプルなインターフェイスを提供します。 BufferMemory を使用するように簡単に設定できます。 、会話履歴をメモリに保存できるようになります。一部のユースケースではこれで十分かもしれませんが、アプリではチャット履歴の長期保持が必要な場合もあります。幸いなことに、これを Upstash Redis インスタンスに交換することも同様に簡単です。 LangChain は、ioredis などの Redis 用の複数の統合を提供します 、node-redis そしてUpstash Redis。 Upstash Redis クライア
-
Upstash Redis を活用したリアルタイム コード コラボレーション
はじめに コードシェアのようなプラットフォームがどのように構築されているか疑問に思ったことはありますか?自分自身の優れた開発者エクスペリエンスを維持しながら、そのようなサービスをスケーリングするという課題に取り組んだことがありますか?Bytecrowds を構築すると決めたとき、これらすべてを行う方法を学ばなければなりませんでした。厳密な調査を行った後、テキスト共有機能を提供するために Yjs を使用することを決定し、データベースを選択する段階になりました。市場には非常に多くの選択肢があるため、シンプルさという 1 つの重要なキーワードを使用してリストを絞り込みました。 Upstash を