TairHash (exHash) は、各フィールドに有効期限とバージョンを設定できるハッシュデータ構造です。この機能により、ハッシュデータ構造の柔軟性が向上し、多くのシナリオでの開発が簡素化されます。
TairHash の概要
TairHash は、Redis ハッシュと同様に豊富なデータインターフェイスと高いパフォーマンスを提供します。ただし、Redis ハッシュではキー単位でのみ有効期限を設定できるのに対し、TairHash では個々のフィールドごとに有効期限とバージョンを設定できます。これにより、ハッシュデータ構造の柔軟性が大幅に向上し、開発が効率化されます。TairHash は、応答時間に顕著な影響を与えることなく期限切れフィールドをチェックおよび削除する、効率的なアクティブエクスパイアアルゴリズムを使用します。
主な特徴
各フィールドに有効期限とバージョンを設定できます。
フィールドに対して、効率的かつ柔軟なアクティブおよびパッシブな有効期限ポリシーをサポートしています。
ネイティブの Redis ハッシュデータ型と類似した構文を使用します。
このモジュールはオープンソースです。詳細については、「TairHash」をご参照ください。
前提条件
最新のマイナーバージョンでは、追加機能と安定性の向上が提供されています。インスタンスを最新のマイナーバージョンに更新してください。詳細については、「マイナーバージョンの更新」をご参照ください。ご利用のインスタンスがクラスタアーキテクチャまたは読み書き分離アーキテクチャを使用している場合、プロキシノードも最新のマイナーバージョンに更新する必要があります。更新しないと、一部のコマンドが認識されない可能性があります。
注意事項
これらのコマンドは、Tair インスタンス内の TairHash データに対して操作を行います。
コマンド
表 1. TairHash コマンド
コマンド | 構文 | 説明 |
| 指定された TairHash キーにフィールドを追加します。キーが存在しない場合は、自動的に作成されます。フィールドがすでに存在する場合は、その値が上書きされます。 | |
| 指定された TairHash キー内のフィールドの値を取得します。キーまたはフィールドが存在しない場合は nil を返します。 | |
| 指定された TairHash キーに複数のフィールドを追加します。キーが存在しない場合は、自動的に作成されます。フィールドがすでに存在する場合は、その値が上書きされます。 | |
| 指定された TairHash キー内のフィールドに絶対的な有効期限を設定します。時間はミリ秒単位で正確です。 | |
| 指定された TairHash キー内のフィールドに相対的な有効期限(ミリ秒単位)を設定します。 | |
| 指定された TairHash キー内のフィールドに絶対的な有効期限を設定します。時間は秒単位で正確です。 | |
| 指定された TairHash キー内のフィールドに相対的な有効期限(秒単位)を設定します。 | |
| 指定された TairHash キー内のフィールドの残り TTL を取得します。時間はミリ秒単位です。 | |
| 指定された TairHash キー内のフィールドの残り TTL を取得します。時間は秒単位です。 | |
| 指定された TairHash キー内のフィールドの現在のバージョン番号を取得します。 | |
| 指定された TairHash キー内のフィールドのバージョン番号を設定します。 | |
| 指定された TairHash キー内のフィールドの整数値を指定された数値分増加させます。キーが存在しない場合は、自動的に作成されます。指定されたフィールドが存在しない場合は、値 0 でフィールドが作成された後、増分操作が実行されます。 説明 フィールドにタイムアウトを設定した後、再度このコマンドを実行する際にタイムアウトを指定しなかった場合、そのフィールドは永久に有効期限なしに設定されます。 | |
| 指定された TairHash キー内のフィールドの浮動小数点数値を指定された数値分増加させます。キーが存在しない場合は、自動的に作成されます。指定されたフィールドが存在しない場合は、値 0 でフィールドが作成された後、増分操作が実行されます。 説明 フィールドにタイムアウトを設定した後、再度このコマンドを実行する際にタイムアウトを指定しなかった場合、そのフィールドは永久に有効期限なしに設定されます。 | |
| 指定された TairHash キー内のフィールドの値とバージョンを取得します。キーまたはフィールドが存在しない場合は nil を返します。 | |
| 指定された TairHash キー内の複数のフィールドの値を取得します。キーまたはフィールドが存在しない場合は nil を返します。 | |
| 指定された TairHash キー内の複数のフィールドの値とバージョンを取得します。 | |
| 指定された TairHash キー内のフィールド数を取得します。このコマンドはパッシブエビクションをトリガーせず、期限切れフィールドをフィルターしません。そのため、結果には期限切れ済みだが削除されていないフィールドが含まれる可能性があります。非期限切れフィールドの数のみを返すには、NOEXP オプションを指定してください。 | |
| TairHash キー内に指定されたフィールドが存在するかどうかを確認します。 | |
| 指定された TairHash キー内のフィールドの値の長さを取得します。 | |
| 指定された TairHash キー内のすべてのフィールドを取得します。 | |
| 指定された TairHash キー内のすべてのフィールドの値を取得します。 | |
| 指定された TairHash キー内のすべてのフィールドとその値を取得します。 | |
| 指定された TairHash キーをスキャンします。 説明 このコマンドは、メモリ最適化インスタンスでのみサポートされています。 | |
| 指定された TairHash キーからフィールドを削除します。キーまたはフィールドが存在しない場合は 0 を、削除が成功した場合は 1 を返します。 | |
| ネイティブの Redis DEL コマンドを使用して、1 つ以上の TairHash キーを削除します。 |
本トピックで使用されているコマンド構文の規則は以下のとおりです。
大文字のキーワード:コマンドのキーワードを示します。斜体のテキスト:変数を示します。[オプション]:角括弧で囲まれたパラメーターは省略可能です。角括弧で囲まれていないパラメーターは必ず指定する必要があります。A|B:縦棒 (|) で区切られたパラメーターは相互排他です。いずれか 1 つのみを指定できます。...:この記号の前にあるパラメーターを繰り返し指定できることを示します。
EXHSET
カテゴリ | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | 指定された TairHash キーにフィールドを追加します。キーが存在しない場合は、自動的に作成されます。フィールドがすでに存在する場合は、その値が上書きされます。 説明
|
オプション |
|
戻り値 |
|
例 | サンプルコマンド: サンプル戻り値: |
EXHGET
カテゴリ | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | 指定された TairHash キー内のフィールドの値を取得します。キーまたはフィールドが存在しない場合は nil を返します。 |
オプション |
|
戻り値 |
|
例 | 事前に サンプルコマンド: サンプル戻り値: |
EXHMSET
カテゴリ | 説明 |
構文 |
|
時間計算量 | O(N) |
コマンドの説明 | 指定された TairHash キーに複数のフィールドを追加します。キーが存在しない場合は、自動的に作成されます。フィールドがすでに存在する場合は、その値が上書きされます。 説明 キーを作成した後、フィールドに有効期限を設定するには、EXHPEXPIREAT、EXHPEXPIRE、EXHEXPIREAT、または EXHEXPIRE コマンドを使用できます。また、キー全体に有効期限を設定するには、EXPIRE コマンドまたは EXPIREAT コマンドを使用できます。 |
オプション |
|
戻り値 |
|
例 | サンプルコマンド: サンプル戻り値: |
EXHPEXPIREAT
カテゴリ | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | 指定された TairHash キー内のフィールドに絶対的な有効期限を設定します。時間はミリ秒単位で正確です。 |
オプション |
|
戻り値 |
|
例 | サンプルコマンド: サンプル戻り値: |
EXHPEXPIRE
カテゴリ | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | 指定された TairHash キー内のフィールドに相対的な有効期限(ミリ秒単位)を設定します。 |
オプション |
|
戻り値 |
|
例 | サンプルコマンド: サンプル戻り値: |
EXHEXPIREAT
カテゴリ | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | 指定された TairHash キー内のフィールドに絶対的な有効期限を設定します。時間は秒単位で正確です。 |
オプション |
|
戻り値 |
|
例 | サンプルコマンド: サンプル戻り値: |
EXHEXPIRE
カテゴリ | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | 指定された TairHash キー内のフィールドに相対的な有効期限(秒単位)を設定します。 |
オプション |
|
戻り値 |
|
例 | サンプルコマンド: サンプル戻り値: |
EXHPTTL
カテゴリ | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | 指定された TairHash キー内のフィールドの残り TTL を取得します。時間はミリ秒単位です。 |
オプション |
|
戻り値 |
|
例 | 事前に サンプルコマンド: サンプル戻り値: |
EXHTTL
カテゴリ | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | 指定された TairHash キー内のフィールドの残り TTL を取得します。時間は秒単位です。 |
オプション |
|
戻り値 |
|
例 | 事前に サンプルコマンド: サンプル戻り値: |
EXHVER
カテゴリ | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | 指定された TairHash キー内のフィールドの現在のバージョン番号を取得します。 |
オプション |
|
戻り値 |
|
例 | サンプルコマンド: サンプル戻り値: |
EXHSETVER
カテゴリ | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | 指定された TairHash キー内のフィールドのバージョン番号を設定します。 |
オプション |
|
戻り値 |
|
例 | サンプルコマンド: サンプル戻り値: |
EXHINCRBY
カテゴリ | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | 指定された TairHash キー内のフィールドの整数値を指定された数値分増加させます。キーが存在しない場合は、自動的に作成されます。指定されたフィールドが存在しない場合は、値 0 でフィールドが作成された後、増分操作が実行されます。 説明 フィールドにタイムアウトを設定した後、再度このコマンドを実行する際にタイムアウトを指定しなかった場合、そのフィールドは永久に有効期限なしに設定されます。 |
オプション |
|
戻り値 |
|
例 | 事前に サンプルコマンド: サンプル戻り値: |
EXHINCRBYFLOAT
カテゴリ | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | 指定された TairHash キー内のフィールドの浮動小数点数値を指定された数値分増加させます。キーが存在しない場合は、自動的に作成されます。指定されたフィールドが存在しない場合は、値 0 でフィールドが作成された後、増分操作が実行されます。 説明 フィールドにタイムアウトを設定した後、再度このコマンドを実行する際にタイムアウトを指定しなかった場合、そのフィールドは永久に有効期限なしに設定されます。 |
オプション |
|
戻り値 |
|
例 | 事前に サンプルコマンド: サンプル戻り値: |
EXHGETWITHVER
カテゴリ | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | 指定された TairHash キー内のフィールドの値とバージョンを取得します。キーまたはフィールドが存在しない場合は nil を返します。 |
オプション |
|
戻り値 |
|
例 | サンプルコマンド: サンプル戻り値: |
EXHMGET
カテゴリ | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | 指定された TairHash キー内の複数のフィールドの値を取得します。キーまたはフィールドが存在しない場合は nil を返します。 |
オプション |
|
戻り値 |
|
例 | 事前に サンプルコマンド: サンプル応答: |
EXHMGETWITHVER
カテゴリ | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | 指定された TairHash キー内の複数のフィールドの値とバージョンを取得します。 |
オプション |
|
戻り値 |
|
例 | 事前に サンプルコマンド: サンプル応答: |
EXHLEN
カテゴリ | 説明 |
構文 |
|
時間計算量 | NOEXP オプションが指定されていない場合は O(1)。NOEXP オプションが指定されている場合は O(N)。 |
コマンドの説明 | 指定された TairHash キー内のフィールド数を取得します。このコマンドはパッシブエビクションをトリガーせず、期限切れフィールドをフィルターしません。そのため、結果には期限切れ済みだが削除されていないフィールドが含まれる可能性があります。非期限切れフィールドの数のみを返すには、NOEXP オプションを指定してください。 |
オプション |
|
戻り値 |
|
例 | サンプルコマンド: サンプル応答: |
EXHEXISTS
カテゴリ | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | TairHash キー内に指定されたフィールドが存在するかどうかを確認します。 |
オプション |
|
戻り値 |
|
例 | サンプルコマンド: サンプル戻り値: |
EXHSTRLEN
カテゴリ | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | 指定された TairHash キー内のフィールドの値の長さを取得します。 |
オプション |
|
戻り値 |
|
例 | サンプルコマンド: サンプル戻り値: |
EXHKEYS
カテゴリ | 説明 |
構文 |
|
時間計算量 | O(N) |
コマンドの説明 | 指定された TairHash キー内のすべてのフィールドを取得します。 |
オプション |
|
戻り値 |
|
例 | 事前に サンプルコマンド: サンプル戻り値: |
EXHVALS
カテゴリ | 説明 |
構文 |
|
時間計算量 | O(N) |
コマンドの説明 | 指定された TairHash キー内のすべてのフィールドの値を取得します。 |
オプション |
|
戻り値 |
|
例 | 事前に サンプルコマンド: サンプル戻り値: |
EXHGETALL
カテゴリ | 説明 |
構文 |
|
時間計算量 | O(N) |
コマンドの説明 | 指定された TairHash キー内のすべてのフィールドとその値を取得します。 |
オプション |
|
戻り値 |
|
例 | 事前に サンプルコマンド: サンプル応答: |
EXHSCAN
カテゴリ | 説明 |
構文 |
|
時間計算量 | 1 回の呼び出しにつき O(1)、完全な走査には O(N) です。 |
コマンドの説明 | 指定された TairHash キーをスキャンします。 説明 このコマンドは、メモリ最適化インスタンスでのみサポートされています。 |
オプション |
|
戻り値 |
|
例 | 事前に サンプルコマンド: サンプル戻り値: |
EXHDEL
カテゴリ | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | 指定された TairHash キーからフィールドを削除します。キーまたはフィールドが存在しない場合は 0 を返します。削除が成功した場合は 1 を返します。 |
オプション |
|
戻り値 |
|
例 | サンプルコマンド: サンプル戻り値: |
よくある質問
Q:同じデータに対して、exHash はなぜ Redis Community Edition の標準ハッシュよりも多くのメモリを使用するのですか?
A:exHash では、個々のフィールドに有効期限やバージョンを設定できます。これにより、データ構造内に追加のメタデータを格納する必要があるため、Redis Community Edition の標準ハッシュと比べてメモリ使用量が多くなります。