すべてのプロダクト
Search
ドキュメントセンター

Tair (Redis® OSS-Compatible):exZset

最終更新日:Nov 09, 2025

TairZset (exZset) は、最大 256 ディメンションの double 型のスコアで項目をソートできます。この機能は、ゲーム、ライブストリーミング、音楽、e コマースなどの業界のリーダーボードに役立ちます。エンコーディングやデコーディングが不要なため、データ処理効率が大幅に向上し、クライアント側の実装が簡素化されます。

TairZset の概要

ネイティブの Redis Sorted Set (Zset とも呼ばれます) は、単一の倍精度スコアによるソートのみをサポートします。これにより、多次元ソートの実装が困難になります。たとえば、IEEE 754 ビットレベルの連結などのメソッドを使用すると、複雑になり、精度が低下し、EXZINCRBY コマンドを使用できなくなります。

Alibaba Cloud が開発した TairZset データ構造は、多次元ソートの実装を簡素化します。従来の方法に比べて、次のような利点があります。

  • 最大 256 ディメンションの double 型のスコアによるソートをサポートします。ソートの優先順位は左から右です。

    多次元スコアの場合、左端のスコアが最も高い優先度を持ちます。たとえば、score1#score2#score3 のような 3 次元のスコアの場合、TairZset はまず score1 を比較します。score1 の値が等しい場合、TairZset は次に score2 を比較します。score2 の値も等しい場合、TairZset は score3 を比較します。すべてのスコアディメンションが同一の場合、要素は辞書式順序 (ASCII 順) でソートされます。

    これを理解しやすくするために、ハッシュ記号 (#) を小数点 (.) と考えることができます。たとえば、0#99、99#90、99#99 の関係は、0.99 < 99.90 < 99.99 と理解できます。したがって、0#99 < 99#90 < 99#99 となります。

  • EXZINCRBY コマンドをサポートします。現在のデータを取得し、ローカルで値をインクリメントしてから Tair に書き戻す必要はもうありません。

  • ネイティブの Zset API に似た API を提供します。

  • 標準リーダーボード分散アーキテクチャリーダーボード の両方の機能を提供します。

  • オープンソースの TairJedis クライアントを提供します。エンコーディングやデコーディングを行う必要はありません。また、オープンソースの実装をリファレンスとして使用して、他の言語でクライアントを開発することもできます。

典型的なシナリオ

TairZset は、ゲーム、ライブストリーミング、音楽、e コマースなどの業界のリーダーボードシナリオに適しています。例として、以下が挙げられます。

  • ライブストリーミングのリーダーボード: ストリーマーのコンテストでは、ストリーマーはまず現在の人気スコアでランク付けされます。人気スコアが同じ場合は、「いいね!」の数でランク付けされます。「いいね!」の数も同じ場合は、受け取ったギフトの合計金額でランク付けされます。

  • メダルテーブル: 参加者は金、銀、銅メダルの数に基づいてランク付けされます。まず金メダルの数でソートされます。金メダルの数が同じ場合は、銀メダルの数でソートされます。銀メダルの数も同じ場合は、銅メダルの数でソートされます。

  • ゲームのリーダーボード: プレイヤーは、スコア、タスク完了時間、ランクレベルなどの複数のディメンションに基づいてランク付けされます。

このモジュールはオープンソースです。詳細については、「TairZset」をご参照ください。

ベストプラクティス

前提条件

インスタンスは Tair メモリ最適化インスタンスである必要があります。インスタンスが Redis 5.0 と互換性のあるメモリ最適化インスタンスである場合、そのマイナーバージョンは 1.7.1 以降である必要があります。

説明

最新のマイナーバージョンは、より多くの機能と高い安定性を提供します。インスタンスを最新のマイナーバージョンに更新することをお勧めします。詳細については、「インスタンスのマイナーバージョンを更新する」をご参照ください。インスタンスがクラスターインスタンスまたは読み書き分離インスタンスである場合は、すべてのコマンドが期待どおりに実行されるように、インスタンス内のプロキシノードを最新のマイナーバージョンに更新することをお勧めします。

注意

このトピックのコマンドは、Tair インスタンスの TairZset データに適用されます。

コマンド

コマンド

構文

説明

EXZADD

EXZADD key [NX|XX] [CH] [INCR] score member [score member ...]

指定されたキーの TairZset に、1 つ以上のメンバーとそのスコアを格納します。

説明

多次元ソートを実装するには、ハッシュ記号 (#) を使用して各ディメンションのスコアを区切ります (例: 111#222#121)。キー内のすべてのメンバーは、同じスコア形式である必要があります。

EXZINCRBY

EXZINCRBY key increment member

指定されたキーの TairZset 内のメンバーのスコアを、increment の値だけインクリメントします。

EXZSCORE

EXZSCORE key member

指定されたキーの TairZset 内のメンバーのスコアを返します。キーまたはメンバーが存在しない場合は、nil を返します。

EXZRANGE

EXZRANGE key min max [WITHSCORES]

指定されたキーの TairZset から、指定された範囲の要素を返します。

EXZREVRANGE

EXZREVRANGE key min max [WITHSCORES]

指定されたキーの TairZset から、指定された範囲の要素を返します。要素はスコアの高いものから低いものへと順に並べられます。同じスコアを持つ要素は、逆辞書式順序で並べられます。

説明

逆のソート順序を除き、このコマンドは EXZRANGE に似ています。

EXZRANGEBYSCORE

EXZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

指定されたキーの TairZset 内で、スコアが minmax の間 (両端を含む) にあるすべての要素を返します。要素はスコアの低いものから高いものへと順に並べられます。同じスコアを持つ要素は、辞書式順序で並べられます。

EXZREVRANGEBYSCORE

EXZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]

指定されたキーの TairZset 内で、スコアが minmax の間 (両端を含む) にあるすべての要素を返します。デフォルトのソート順とは異なり、このコマンドはスコアの高いものから低いものへと順に並べられた要素を返します。同じスコアを持つ要素は、逆辞書式順序で並べられます。

説明

逆のソート順序を除き、このコマンドは EXZRANGEBYSCORE に似ています。このコマンドでは max が min の前に来ることに注意してください。

EXZRANGEBYLEX

EXZRANGEBYLEX key min max [LIMIT offset count]

TairZset 内のすべての要素が同じスコアを持つ場合、このコマンドは、指定されたキーで minmax の辞書式順序の範囲内にあるすべての要素を返します。

EXZREVRANGEBYLEX

EXZREVRANGEBYLEX key max min [LIMIT offset count]

TairZset 内のすべての要素が同じスコアを持つ場合、このコマンドは、指定されたキーで max と min の辞書式順序の範囲内にあるすべての要素を返します。

説明

逆のソート順序を除き、このコマンドは EXZRANGEBYLEX に似ています。このコマンドでは max が min の前に来ることに注意してください。

EXZREM

EXZREM key member [member ...]

指定されたキーの TairZset から指定されたメンバーを削除します。存在しないメンバーは無視されます。

EXZREMRANGEBYSCORE

EXZREMRANGEBYSCORE key min max

指定されたキーの TairZset 内で、スコアが minmax の間 (両端を含む) にあるすべての要素を削除します。

EXZREMRANGEBYRANK

EXZREMRANGEBYRANK key start stop

指定されたキーの TairZset 内で、ランクが startstop の間にあるすべての要素を削除します。

EXZREMRANGEBYLEX

EXZREMRANGEBYLEX key min max

TairZset 内のすべての要素が同じスコアを持つ場合、このコマンドは、指定されたキーで max と min の辞書式順序の範囲内にあるすべての要素を削除します。

説明

このコマンドと EXZRANGEBYLEX コマンドを同じ minmax のパラメーター値で実行すると、このコマンドは EXZRANGEBYLEX コマンドが返すのと同じ要素を削除します。

EXZCARD

EXZCARD key

指定されたキーの TairZset のカーディナリティ (要素数) を返します。

EXZRANK

EXZRANK key member

指定されたキーの TairZset 内のメンバーのランクを、スコアの低いものから高いものへと順に並べて返します。ランク (またはインデックス) は 0 から始まるため、スコアが最も低いメンバーのランクは 0 です。

EXZREVRANK

EXZREVRANK key member

指定されたキーの TairZset 内のメンバーのランクを、スコアの高いものから低いものへと順に並べて返します。ランク (またはインデックス) は 0 から始まるため、スコアが最も高いメンバーのランクは 0 です。

説明

逆のソート順序を除き、このコマンドは EXZRANK に似ています。

EXZCOUNT

EXZCOUNT key min max

指定されたキーの TairZset 内で、スコアが minmax の間にある要素の数を返します。

EXZLEXCOUNT

EXZLEXCOUNT key min max

TairZset 内のすべての要素が同じスコアを持つ場合、このコマンドは、指定されたキーで min と max の辞書式順序の範囲内にある要素の数を返します。

EXZRANKBYSCORE

EXZRANKBYSCORE key score

指定されたキーの TairZset 内で、指定されたスコアのランクを、スコアの低いものから高いものへと順に並べて計算します。ランク (またはインデックス) は 0 から始まるため、スコアが最も低いメンバーのランクは 0 です。

説明

指定されたスコアが存在しない場合、コマンドは TairZset 内のそのスコアの見込みランクを返します。指定されたスコアが既に存在する場合、Tair はデフォルトで指定されたスコアを既存のスコアの前にランク付けします。

EXZREVRANKBYSCORE

EXZREVRANKBYSCORE key score

指定されたキーの TairZset 内で、指定されたスコアのランクを、スコアの高いものから低いものへと順に並べて計算します。ランク (またはインデックス) は 0 から始まるため、スコアが最も高いメンバーのランクは 0 です。

説明

指定されたスコアが存在しない場合、コマンドは TairZset 内のそのスコアの見込みランクを返します。指定されたスコアが既に存在する場合、Tair はデフォルトで指定されたスコアを既存のスコアの後にランク付けします。

DEL

DEL key [key ...]

ネイティブの Redis DEL コマンドを使用して、1 つ以上の TairZset キーを削除します。

説明

次の一覧は、このトピックで使用されるコマンド構文の規則について説明しています。

  • Uppercase keyword: コマンドのキーワードを示します。

  • Italic text: 変数を示します。

  • [options]: 囲まれたパラメーターがオプションであることを示します。角括弧で囲まれていないパラメーターは指定する必要があります。

  • A|B: 縦棒 (|) で区切られたパラメーターが相互に排他的であることを示します。パラメーターの 1 つだけを指定できます。

  • ...: この記号の前のパラメーターを繰り返し指定できることを示します。

EXZADD

カテゴリ

説明

構文

EXZADD key [NX|XX] [CH] [INCR] score member [score member ...]

時間計算量

O(N)

コマンドの説明

指定されたキーの TairZset に、1 つ以上のメンバーとそのスコアを格納します。キーとメンバーが存在するかどうかに基づいて、システムは異なるアクションを実行します。

  • 指定されたキーまたはメンバーが存在しない場合、システムはそれを作成し、スコアを挿入します。

  • 指定されたキーとメンバーが既に存在する場合、システムはスコアを更新 (上書き) します。

  • 各スコアは、倍精度浮動小数点数の文字列として表されます。+inf と -inf は有効な値です。

説明

多次元ソートを実装するには、ハッシュ記号 (#) を使用して各ディメンションのスコアを区切ります (例: 111#222#121)。キー内のすべてのメンバーは、同じスコア形式である必要があります。

オプション

  • NX: 新しい要素のみを追加します。既存の要素は更新しません。

  • XX: 既存の要素のみを更新します。新しい要素は追加しません。

  • CH: 通常、このコマンドは追加された新しい要素の数を返します。このオプションは、戻り値を変更された要素の総数に変更します。

    説明

    変更された要素には、新しい要素とスコアが更新された既存の要素が含まれます。したがって、コマンド内の既存の要素のスコアが変更されない場合、それは変更された要素としてカウントされません。

  • INCR: このオプションが指定されると、EXZADD は EXZINCRBY のように動作します。このモードでは、1 つのスコア要素ペアのみを指定できます。

戻り値

以下を示す整数:

  • オプションが指定されていない場合、キーに追加された要素の数を返します (スコアのみが更新された要素は除きます)。

  • CH オプションが指定されている場合、変更された (追加または更新された) 要素の数を返します。

  • INCR オプションが指定されている場合、メンバーの新しいスコアを文字列として返します。多次元スコアを使用する場合、フォーマットは "score1#score2#score3#..." で、たとえば 2#0#6 のようになります。

    説明

    操作が中止された場合 (コマンドに XX または NX オプションが含まれているため)、nil を返します。

コマンド例:

EXZADD testkey NX 1#0#3 a 1#0#2 b

戻り値の例:

(integer) 2

EXZINCRBY

カテゴリ

説明

構文

EXZINCRBY key increment member

時間計算量

O(log(N))

コマンドの説明

指定されたキーの TairZset 内のメンバーのスコアを、increment の値だけインクリメントします。キーとメンバーが存在するかどうかに基づいて、システムは異なるアクションを実行します。

  • 指定されたキーまたはメンバーが存在しない場合、システムはそれを作成し、スコアを挿入します。

  • 指定されたキーとメンバーが既に存在する場合、システムはスコアを更新 (インクリメント) します。

  • 各スコアは、倍精度浮動小数点数の文字列として表されます。+inf と -inf は有効な値です。

説明
  • 多次元ソートを実装するには、ハッシュ記号 (#) を使用して各ディメンションのスコアを区切ります (例: 111#222#121)。キー内のすべてのメンバーは、同じスコア形式である必要があります。

  • スコア値は数値の文字列表現でなければならず、倍精度浮動小数点数にすることができます。メンバーのスコアを減らすには、負の数を指定します。

オプション

なし

戻り値

メンバーの新しいスコアを文字列として返します。多次元スコアを使用する場合、フォーマットは "score1#score2#score3#..." で、たとえば 2#0#6 のようになります。

コマンド例:

EXZINCRBY testkey 2#2#1 a

戻り値の例:

"3#2#4"

EXZSCORE

カテゴリ

説明

構文

EXZSCORE key member

時間計算量

O(1)

コマンドの説明

指定されたキーの TairZset 内のメンバーのスコアを返します。キーまたはメンバーが存在しない場合は、nil を返します。

オプション

なし

戻り値

メンバーのスコアを文字列として返します。多次元スコアを使用する場合、フォーマットは "score1#score2#score3#..." で、たとえば 2#0#6 のようになります。

コマンド例:

EXZSCORE testkey a

戻り値の例:

"3#2#4"

EXZRANGE

カテゴリ

説明

構文

EXZRANGE key min max [WITHSCORES]

時間計算量

O(log(N)+M)。ここで、N は TairZset 内の要素の数、M は返される要素の数です。

コマンドの説明

指定されたキーの TairZset から、指定された範囲の要素を返します。

オプション

  • minmax は 0 から始まるインデックスです。最初の要素のインデックスは 0、2 番目の要素のインデックスは 1、というようになります。これらの 2 つのパラメーターを使用して、閉区間を指定できます。

    説明
    • インデックスが負の場合、返される要素の末尾からのオフセットを示します。たとえば、-1 はキーの最後の要素を表し、-2 は最後から 2 番目の要素を表します。

    • すべての要素をクエリするには、min を 0 に、max を -1 に設定します。

    • min の値がキーの最後の要素のインデックスまたは max の値より大きい場合、空のリストが返されます。

  • WITHSCORES: 戻り値に要素のスコアを含めます。返されるリストのデータ形式は value1, score1, ..., valueN, scoreN です。例:

    1) "b"
    2) "1#0#2"
    3) "a"
    4) "3#2#4"

戻り値

指定された範囲の要素のリストを返します。WITHSCORES オプションを使用する場合、戻り値には要素のスコアが含まれます。

コマンド例:

EXZRANGE testkey 0 -1 WITHSCORES

応答の例:

1) "b"
2) "1#0#2"
3) "a"
4) "3#2#4"

EXZREVRANGE

カテゴリ

説明

構文

EXZREVRANGE key min max [WITHSCORES]

時間計算量

O(log(N)+M)。ここで、N は TairZset 内の要素の数、M は返される要素の数です。

コマンドの説明

指定されたキーの TairZset から、指定された範囲の要素を返します。要素はスコアの高いものから低いものへと順に並べられます。同じスコアを持つ要素は、逆辞書式順序で並べられます。

説明

逆のソート順序を除き、このコマンドは EXZRANGE に似ています。

オプション

  • minmax は 0 から始まるインデックスです。最初の要素のインデックスは 0、2 番目の要素のインデックスは 1、というようになります。これらの 2 つのパラメーターを使用して、閉区間を指定できます。

    説明
    • インデックスが負の場合、返される要素の末尾からのオフセットを示します。たとえば、-1 はキーの最後の要素を表し、-2 は最後から 2 番目の要素を表します。

    • すべての要素をクエリするには、min を 0 に、max を -1 に設定します。

    • min の値がキーの最後の要素のインデックスまたは max の値より大きい場合、空のリストが返されます。

  • WITHSCORES: 戻り値に要素のスコアを含めます。返されるリストのデータ形式は value1, score1, ..., valueN, scoreN です。例:

    1) "b"
    2) "1#0#2"
    3) "a"
    4) "3#2#4"

戻り値

指定された範囲の要素のリストを返します。WITHSCORES オプションを使用する場合、戻り値には要素のスコアが含まれます。

コマンド例:

EXZREVRANGE testkey 0 -1 WITHSCORES

戻り値の例:

1) "a"
2) "3#2#4"
3) "b"
4) "1#0#2"

EXZRANGEBYSCORE

カテゴリ

説明

構文

EXZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

時間計算量

O(log(N)+M)。ここで、N は TairZset 内の要素の数、M は返される要素の数です。

説明

M が定数である場合 (たとえば、LIMIT オプションを使用して常に上位 10 個の要素を返す場合)、計算量は O(log(N)) と見なすことができます。

コマンドの説明

指定されたキーの TairZset 内で、スコアが minmax の間 (両端を含む) にあるすべての要素を返します。要素はスコアの低いものから高いものへと順に並べられます。同じスコアを持つ要素は、辞書式順序で並べられます。

オプション

  • minmax は、最小スコアと最大スコアを表します。キー内の要素が多次元スコアを使用する場合、ハッシュ記号 (#) を使用して各ディメンションのスコアを区切ります。

    説明
    • キー内の要素の最高スコアと最低スコアが不明で、特定の値以上のスコアを持つ要素、または特定の値以下のスコアを持つ要素をクエリする場合は、minmax をそれぞれ負の無限大 (-inf) と正の無限大 (+inf) に設定します。

    • データ範囲はデフォルトで閉区間です。開区間を指定するには、スコア範囲の前に括弧を追加します。たとえば、(1 5 は、スコアが 1 より大きく 5 以下の要素を返します。

  • WITHSCORES: 戻り値に要素のスコアを含めます。

  • LIMIT offset count: 返される結果の数と間隔を指定します。count が負の場合、オフセットからすべての要素が返されます。

    説明

    offset が大きい場合、要素を返す前にオフセット要素を見つけるためにキー全体を走査する必要があります。これにより、時間計算量が増加します。

戻り値

指定されたスコア範囲内の要素のリストを返します。WITHSCORES オプションを使用する場合、戻り値には要素のスコアが含まれます。

コマンド例:

EXZRANGEBYSCORE testkey 0#0#0 6#6#6 WITHSCORES

戻り値の例:

1) "b"
2) "1#0#2"
3) "a"
4) "3#2#4"

EXZREVRANGEBYSCORE

カテゴリ

説明

構文

EXZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]

時間計算量

O(log(N)+M)。ここで、N は TairZset 内の要素の数、M は返される要素の数です。

説明

M が定数である場合 (たとえば、LIMIT オプションを使用して常に上位 10 個の要素を返す場合)、計算量は O(log(N)) と見なすことができます。

コマンドの説明

指定されたキーの TairZset 内で、スコアが minmax の間 (両端を含む) にあるすべての要素を返します。TairZset のデフォルトのソート順とは異なり、このコマンドはスコアの高いものから低いものへと順に並べられた要素を返します。同じスコアを持つ要素は、逆辞書式順序で並べられます。

説明

逆のソート順序を除き、このコマンドは EXZRANGEBYSCORE に似ています。このコマンドでは max が min の前に来ることに注意してください。

オプション

  • minmax は、最小スコアと最大スコアを表します。キー内の要素が多次元スコアを使用する場合、ハッシュ記号 (#) を使用して各ディメンションのスコアを区切ります。

    説明
    • キー内の要素の最高スコアと最低スコアが不明で、特定の値以上のスコアを持つ要素、または特定の値以下のスコアを持つ要素をクエリする場合は、minmax をそれぞれ負の無限大 (-inf) と正の無限大 (+inf) に設定します。

    • データ範囲はデフォルトで閉区間です。開区間を指定するには、スコア範囲の前に括弧を追加します。たとえば、(1 5 は、スコアが 1 より大きく 5 以下の要素を返します。

  • WITHSCORES: 戻り値に要素のスコアを含めます。

  • LIMIT offset count: 返される結果の数と間隔を指定します。count が負の場合、オフセットからすべての要素が返されます。

    説明

    offset が大きい場合、要素を返す前にオフセット要素を見つけるためにキー全体を走査する必要があります。これにより、時間計算量が増加します。

戻り値

指定されたスコア範囲内の要素のリストを返します。WITHSCORES オプションを使用する場合、戻り値には要素のスコアが含まれます。

コマンド例:

EXZREVRANGEBYSCORE testkey 6#6#6 0#0#0 WITHSCORES

戻り値の例:

1) "a"
2) "3#2#4"
3) "b"
4) "1#0#2"

EXZRANGEBYLEX

カテゴリ

説明

構文

EXZRANGEBYLEX key min max [LIMIT offset count]

時間計算量

O(log(N)+M)。ここで、N は TairZset 内の要素の数、M は返される要素の数です。

説明

M が定数である場合 (たとえば、LIMIT オプションを使用して上位 10 個の要素を返す場合)、計算量は O(log(N)) と見なすことができます。

コマンドの説明

TairZset 内のすべての要素が同じスコアを持つ場合、このコマンドは、キーから minmax の辞書式順序の範囲内にある要素を返します。これにより、要素が辞書式順序でソートされることが保証されます。

説明
  • キー内の要素が異なるスコアを持つ場合、返される要素は未定義です。

  • このコマンドは memcmp() C 関数を使用して、2 つの要素文字列のバイトを 1 つずつ比較します。要素は比較結果に基づいて低いものから高いものへと順に並べられます。2 つの文字列が共通の部分文字列を共有する場合、長い方の文字列が高い値を持つと見なされます。

オプション

  • minmax は、最小および最大のメンバー名を文字列として表します。文字範囲を指定する必要があります。例:

    • 開区間: 値の前に括弧を追加します (例: (a)。

    • 閉区間: 値の前に角括弧を追加します (例: [a)。

    説明

    正の無限大と負の無限大は、それぞれ +- で表されます。

  • LIMIT offset count: 返される結果の数と間隔を指定します。count が負の場合、オフセットからすべての要素が返されます。

    説明

    offset が大きい場合、要素を返す前にオフセット要素を見つけるためにキー全体を走査する必要があります。これにより、時間計算量が増加します。

戻り値

名前が指定された範囲内にある要素のリストを返します。

コマンド例:

EXZRANGEBYLEX zzz [a [b

戻り値の例:

1) "aba"
2) "abc"

EXZREVRANGEBYLEX

カテゴリ

説明

構文

EXZREVRANGEBYLEX key max min [LIMIT offset count]

時間計算量

O(log(N)+M)。ここで、N は TairZset 内の要素の数、M は返される要素の数です。

説明

M が定数である場合 (たとえば、LIMIT オプションを使用して常に上位 10 個の要素を返す場合)、計算量は O(log(N)) と見なすことができます。

コマンドの説明

TairZset 内のすべての要素が同じスコアを持つ場合、このコマンドは、キーから max と min の辞書式順序の範囲内にある要素を返します。

説明

逆のソート順序を除き、このコマンドは EXZRANGEBYLEX に似ています。このコマンドでは max が min の前に来ることに注意してください。

オプション

  • minmax は、最小および最大のメンバー名を文字列として表します。文字範囲を指定する必要があります。例:

    • 開区間: 値の前に括弧を追加します (例: (a)。

    • 閉区間: 値の前に角括弧を追加します (例: [a)。

    説明

    正の無限大と負の無限大は、それぞれ +- で表されます。

  • LIMIT offset count: 返される結果の数と間隔を指定します。count が負の場合、オフセットからすべての要素が返されます。

    説明

    offset が大きい場合、要素を返す前にオフセット要素を見つけるためにキー全体を走査する必要があります。これにより、時間計算量が増加します。

戻り値

名前が指定された範囲内にある要素のリストを返します。

コマンド例:

EXZREVRANGEBYLEX zzz [b [a

戻り値の例:

1) "abc"
2) "aba"

EXZREM

カテゴリ

説明

構文

EXZREM key member [member ...]

時間計算量

O(M*log(N))。ここで、N は TairZset 内の要素の数、M は削除される要素の数です。

コマンドの説明

指定されたキーの TairZset から指定されたメンバーを削除します。存在しないメンバーは無視されます。

説明

指定されたキーは存在するが、そのデータ構造が TairZset でない場合、エラーが返されます。

オプション

なし

戻り値

キーから削除されたメンバーの数を返します。存在しないメンバーは含まれません。

コマンド例:

EXZREM testkey a

戻り値の例:

(integer) 1

EXZREMRANGEBYSCORE

カテゴリ

説明

構文

EXZREMRANGEBYSCORE key min max

時間計算量

O(log(N)+M)。ここで、N は TairZset 内の要素の数、M は削除される要素の数です。

コマンドの説明

指定されたキーの TairZset 内で、スコアが minmax の間 (両端を含む) にあるすべての要素を削除します。

オプション

minmax は、最小スコアと最大スコアを表します。キー内の要素が多次元スコアを使用する場合、ハッシュ記号 (#) を使用して各ディメンションのスコアを区切ります。

説明
  • キー内の要素の最高スコアと最低スコアが不明で、特定の値以上のスコアを持つ要素、または特定の値以下のスコアを持つ要素を削除する場合は、minmax をそれぞれ負の無限大 (-inf) と正の無限大 (+inf) に設定します。

  • データ範囲はデフォルトで閉区間です。開区間を指定するには、スコア範囲の前に括弧を追加します。たとえば、EXZREMRANGEBYSCORE (1 5 は、スコアが 1 より大きく 5 以下の要素を削除します。

戻り値

削除された要素の数を返します。

コマンド例:

EXZREMRANGEBYSCORE testkey 3#2#4 6#6#6

戻り値の例:

(integer) 1

EXZREMRANGEBYRANK

カテゴリ

説明

構文

EXZREMRANGEBYRANK key start stop

時間計算量

O(log(N)+M)。ここで、N は TairZset 内の要素の数、M は操作によって削除された要素の数です。

コマンドの説明

指定されたキーの TairZset 内で、ランクが startstop の間にあるすべての要素を削除します。

オプション

startstop は 0 から始まるインデックスで、0 はスコアが最も低い要素を表します。インデックスが負の場合、スコアが最も高い要素からのオフセットを表します。たとえば、-1 はスコアが最も高い要素、-2 はスコアが 2 番目に高い要素です。

戻り値

削除された要素の数。

コマンド例:

EXZREMRANGEBYRANK testkey 0 1EXZREVRANGEBYSCORE

戻り値の例:

(integer) 1

EXZREMRANGEBYLEX

カテゴリ

説明

構文

EXZREMRANGEBYLEX key min max

時間計算量

O(log(N)+M)。ここで、N は TairZset 内の要素の数、M は操作によって削除された要素の数です。

コマンドの説明

TairZset 内のすべての要素が同じスコアを持つ場合、このコマンドは、キーから max と min の辞書式順序の範囲内にある要素を削除します。これにより、要素が辞書式順序でソートされることが保証されます。

説明

このコマンドと EXZRANGEBYLEX コマンドを同じ minmax のパラメーター値で実行すると、このコマンドは EXZRANGEBYLEX コマンドが返すのと同じ要素を削除します。

オプション

minmax は、最小および最大のメンバー名を文字列として表します。文字範囲を指定する必要があります。例:

  • 開区間: 値の前に括弧を追加します (例: (a)。

  • 閉区間: 値の前に角括弧を追加します (例: [a)。

戻り値

削除された要素の数。

コマンド例:

EXZREMRANGEBYLEX [a [b

戻り値の例:

(integer) 2

EXZCARD

カテゴリ

説明

構文

EXZCARD key

時間計算量

O(1)

コマンドの説明

指定されたキーの TairZset のカーディナリティ (要素数) を返します。

オプション

なし

戻り値

キー内の要素の数を返します。キーが存在しない場合は 0 を返します。

コマンド例:

EXZCARD testkey

戻り値の例:

(integer) 2

EXZRANK

カテゴリ

説明

構文

EXZRANK key member

時間計算量

O(log(N))

コマンドの説明

指定されたキーの TairZset 内のメンバーのランクを、スコアの低いものから高いものへと順に並べて返します。ランク (またはインデックス) は 0 から始まるため、スコアが最も低いメンバーのランクは 0 です。

オプション

なし

戻り値

  • 指定されたメンバーがキーに存在する場合、メンバーのランクを整数として返します。

  • キーまたはキー内のメンバーが存在しない場合は、nil を返します。

コマンド例:

EXZRANK testkey b

戻り値の例:

(integer) 0

EXZREVRANK

カテゴリ

説明

構文

EXZREVRANK key member

時間計算量

O(log(N))

コマンドの説明

指定されたキーの TairZset 内のメンバーのランクを返します。結果はスコアの高いものから低いものへと順に並べられます。ランク (またはインデックス) は 0 から始まるため、スコアが最も高いメンバーのランクは 0 です。

説明

逆のソート順序を除き、このコマンドは EXZRANK に似ています。

オプション

なし

戻り値

  • 指定されたメンバーがキーに存在する場合、メンバーのランクを整数として返します。

  • キーまたはキー内のメンバーが存在しない場合は、nil を返します。

コマンド例:

EXZREVRANK testkey b

戻り値の例:(integer) 1

(integer) 1

EXZCOUNT

カテゴリ

説明

構文

EXZCOUNT key min max

時間計算量

O(log(N))。ここで、N は TairZset 内の要素の数です。

説明

クエリ範囲は要素のランクに基づいて取得されるため、この操作に関わる作業量はクエリ範囲のサイズに比例しません。

コマンドの説明

指定されたキーの TairZset 内で、スコアが minmax の間にある要素の数を返します。

オプション

minmax は、最小スコアと最大スコアを表します。キー内の要素が多次元スコアを使用する場合、ハッシュ記号 (#) を使用して各ディメンションのスコアを区切ります。

説明
  • キー内の要素の最高スコアと最低スコアが不明で、特定の値以上のスコアを持つ要素、または特定の値以下のスコアを持つ要素をクエリする場合は、minmax をそれぞれ負の無限大と正の無限大に設定します。

  • データ範囲はデフォルトで閉区間です。開区間を指定するには、スコア範囲の前に括弧を追加します。たとえば、(1 5 は、スコアが 1 より大きく 5 以下の要素を返します。

戻り値

指定されたスコア範囲内の要素の数 (整数) を返します。

コマンド例:

EXZCOUNT testkey (1#0#2 6#6#6

戻り値の例:

(integer) 1

EXZLEXCOUNT

カテゴリ

説明

構文

EXZLEXCOUNT key min max

時間計算量

O(log(N))。ここで、N は TairZset 内の要素の数です。

説明

クエリ範囲は要素のランクに基づいて取得されるため、この操作に関わる作業量はクエリ範囲のサイズに比例しません。

コマンドの説明

TairZset 内のすべての要素が同じスコアを持つ場合、このコマンドは、指定されたキーで min と max の辞書式順序の範囲内にある要素の数を返します。これにより、要素が辞書式順序でソートされることが保証されます。

説明
  • キー内の要素が異なるスコアを持つ場合、返される要素は未定義です。

  • このコマンドは memcmp() C 関数を使用して、2 つの要素文字列のバイトを 1 つずつ比較します。要素は比較結果に基づいて低いものから高いものへと順に並べられます。2 つの文字列が共通の部分文字列を共有する場合、長い方の文字列が高い値を持つと見なされます。

オプション

minmax は、最小および最大のメンバー名を文字列として表します。文字範囲を指定する必要があります。例:

  • 開区間: 値の前に括弧を追加します (例: (a)。

  • 閉区間: 値の前に角括弧を追加します (例: [a)。

戻り値

指定されたスコア範囲内の要素の数 (整数) を返します。

コマンド例:

EXZLEXCOUNT zzz [a [b

戻り値の例:

(integer) 2

EXZRANKBYSCORE

カテゴリ

説明

構文

EXZRANKBYSCORE key score

時間計算量

O(log(N))

コマンドの説明

指定されたキーの TairZset 内で、指定されたスコアのランクを、スコアの低いものから高いものへと順に並べて計算します。ランク (またはインデックス) は 0 から始まるため、スコアが最も低いメンバーのランクは 0 です。

説明

指定されたスコアが存在しない場合、コマンドは TairZset 内のそのスコアの見込みランクを返します。指定されたスコアが既に存在する場合、Tair はデフォルトで指定されたスコアを既存のスコアの前にランク付けします。

オプション

なし

戻り値

キー内の指定されたスコアのランクを返します。

コマンド例:

EXZRANKBYSCORE testkey 2#0#2 

戻り値の例:

(integer) 1

EXZREVRANKBYSCORE

カテゴリ

説明

構文

EXZREVRANKBYSCORE key score

時間計算量

O(log(N))

コマンドの説明

指定されたキーの TairZset 内で、指定されたスコアのランクを、スコアの高いものから低いものへと順に並べて計算します。ランク (またはインデックス) は 0 から始まるため、スコアが最も高いメンバーのランクは 0 です。

説明

指定されたスコアが存在しない場合、コマンドは TairZset 内のそのスコアの見込みランクを返します。指定されたスコアが既に存在する場合、Tair はデフォルトで指定されたスコアを既存のスコアの後にランク付けします。

オプション

なし

戻り値

キー内の指定されたスコアのランクを返します。

コマンド例:

EXZREVRANKBYSCORE testkey 2#0#2 

戻り値の例:

(integer) 1