Redis 文字列の説明
文字列は、Redis データベースによって導入された最も基本的で基本的なデータ構造です。 Redis 文字列は、バイトのバイナリ セーフ シーケンスです。これらは、Java や c#.net などのプログラミング言語で使用できる通常の文字列によく似ています。最も重要なことは、Redis 文字列を使用して、文字列、整数、シリアル化された JSON、XML、バイナリ値など、ほぼすべてのものを保存できることです。 Redis の文字列データ型はバイナリ セーフであるため、画像、動画、ドキュメントなどのバイナリ オブジェクトを文字列を使用して簡単に保存できます。さらに、単一の Redis 文字列は最大 512MB のデータを保持できます。
さらに、Redis 文字列データ構造は、次のユース ケースで一般的に使用されます。
- キャッシング
- セッションストレージ
- API レスポンス
- HTML ページ
- カウンター
- ビットマップの実装とビット演算
最もよく使用される文字列操作は、SET、GET、MGET、および SETNX です。 INCRBY および INCRBYFLOAT コマンドは、Redis 文字列データ構造を使用して実装されたカウンターを管理するために一般的に使用されます。このチュートリアルでは、MGET コマンドについて詳しく説明します。
MGET コマンドの公開
MGET コマンドは、指定された Redis キーの値を取得するために使用されます。引数として 1 つ以上のキーを受け入れます。さらに、MGET コマンドは、N が指定されたキーの数である O(N) 時間の複雑さで動作します。 MGET コマンドの構文は次のとおりです。
MGET キー [ 鍵 ... ]
MGET コマンドを実行すると、指定された Redis キーに格納されている値の配列が返されます。キーが存在しない場合は、特別な値を返します なし。 同様に、キーが文字列値を保持していない場合、 なし 値が返されます。
ユースケース: キャッシュされたすべての API レスポンスを取得する
最近の API 応答を保持するキャッシュを実装するために Redis 文字列データ型が使用されるシナリオを想定してみましょう。 SET コマンドを使用して、デモンストレーション用にいくつかのダミー API 応答を保存します。
設定 ダミーホスト / 顧客 「リッキー、バーナード、メアリー、サミュエル、ジョー」 設定 ダミーホスト / サプライヤー 「ジミー、ジェレミー、アンドリュー、ヘラ」 設定 ダミーホスト / 請求書 '{'invoices': [{'invoice_id': 1, 'invoice_payment': 1000}, {'invoice_id': 2, 'invoice_payment': 3400}]}'
Redis 文字列データ型を使用して、いくつかの文字列値とシリアル化された JSON オブジェクトを保存します。
それでは、MGET コマンドを使用して、各 API 呼び出しのすべての応答を一度に取得してみましょう。
mget ダミーホスト / 顧客ダミーホスト / サプライヤーダミーホスト / 請求書
出力:
1 ) 「リッキー、バーナード、メアリー、サミュエル、ジョー」2 ) 「ジミー、ジェレミー、アンドリュー、ヘラ」
3 ) 「{」 請求書 ': [{' 請求書ID ': 1' 請求書の支払い ':1000}, {' 請求書ID ': 2、 ' 請求書の支払い ':3400}]}'
予想どおり、各キーの値は配列として返されます。
存在しないキーの指定
前述のように、MGET コマンドは特別な値を返します。 なし 存在しないキーが提供された場合。 「nonexistingkey」という存在しないキーを MGET コマンドに指定し、前の例を次のように実行します。
mget ダミーホスト / 顧客ダミーホスト / サプライヤーダミーホスト / 請求書が存在しないキー
ご覧のとおり、配列の最後の値は なし これは、存在しない Redis キーに関連付けられています。
全体として、MGET コマンドは、GET コマンドを複数回呼び出すのではなく、1 回の呼び出しで複数のキーに格納されている文字列値を取得する必要がある場合に理想的な候補です。
結論
要約すると、MGET コマンドは Redis 文字列データ構造を操作して、1 回の呼び出しで複数のキーに格納されている値を返します。 1 つ以上の Redis キーを引数として受け入れます。強調表示されているように、MGET コマンドは O(N) 時間の複雑さで動作します。このユース ケースでは、MGET コマンドを使用して、複数のキーに保存されている複数の API 応答を効率的にフェッチする方法を示しました。