オンラインショップ
商品ページ、価格、在庫数は毎秒何千回も読み取られ、カタログが変わるとタグで更新されます。
最もホットなデータをメモリに保持し、すべてのコアを働かせるエンジンで、読み取りに1ミリ秒を大きく下回る時間で応答します。
ヒットはメモリから直接返ります。データベースには触れません。
実際のHotKVコマンドと応答例を使ったアニメーションのウォークスルーです。任意のステップをクリックすると、そこに移動します。 コマンドと応答は、HotKVで実際に入力し表示されるとおり英語のままです。
1秒間に何千回も読まれるデータのためにデータベースにアクセスするのは、遅く高価です。ページの表示、API呼び出し、ダッシュボードの更新のたびに同じクエリが繰り返され、アプリケーションよりもずっと先にデータベースがボトルネックになります。
HotKVはデータベースの前に置かれ、結果をメモリに保持します。アプリケーションはまずHotKVから読み取り、ミスしたときだけデータベースに問い合わせます。HotKVは多数のスレッドで同時にコマンドを実行するため、忙しいキャッシュでもすべてのクライアントが1つのコアに集中することはありません。さらにタグを使えば、元のデータが変わったときにエントリーのグループ全体を無効化できます。
ヒットはメモリから直接返ります。データベースには触れません。
GET product:1001ミスすると、アプリケーションはデータベースを一度読み取り、結果を5分間キャッシュします。
SET product:2002 "{\"name\":\"Oak desk\",\"price\":420}" EX 300照明商品を表示するキャッシュ済みのページには、すべて同じタグが付きます。
TAG.SET product:1001 catalog:lighting価格が変わりました。タグの付いたキーをすべて一覧にし、1つのパイプラインで削除します。
TAG.MEMBERS catalog:lighting設定済みのフラッシュトークンで、ナノ秒の精度で250 ms後に消えなければなりません。
NEXPIRE flash:token:9 250000000商品ページ、価格、在庫数は毎秒何千回も読み取られ、カタログが変わるとタグで更新されます。
人気のエンドポイントの応答を短いTTLでキャッシュするため、トラフィックの急増はデータベースではなくメモリが受け止めます。
レンダリング済みのフラグメントと記事のメタデータを数分間キャッシュし、編集者が公開するとタグで無効化します。
EXPIREとPEXPIREは期待どおりに動作します。NEXPIREはナノ秒の精度を追加します。
EXPIREPEXPIRENEXPIRETAG.SETでキーにラベルを付け、そのラベルを持つすべてのキーを見つけます。
TAG.SETTAG.MEMBERS大きなペイロードを圧縮できるため、ワーキングセットのより多くをメモリに収められます。
コマンドは並列のスレッドで実行されるため、スループットはコア数に応じて伸びます。数値はパフォーマンスのページにあります。
GETMGETHotKVはRedisプロトコル(RESP2とRESP3)に対応しているため、標準的なRedisクライアントで接続できます。依存しているコマンドについては、コマンドリファレンスを確認してください。
キャッシュするときにTAG.SETでキーにタグを付け、TAG.MEMBERSを呼び出して返ってきたものを削除します。
HotKVが公開しているベンチマークの、パイプライン化したGETのスループットです。手法とハードウェアはパフォーマンスのページにあります。
HotKVはRedisプロトコルに対応しているため、既存のクライアントを向けるだけで、これらと同じコマンドを実行できます。