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

Tair (Redis® OSS-Compatible):exZset

最終更新日:Sep 12, 2024

TairZset (exZset) データ構造を使用すると、256のディメンションに基づいてDOUBLE型のデータをソートできます。 ゲーム、ライブストリーミング、音楽、eコマースなどの業界で使用するリーダーボードを実装するのに理想的です。 TairZsetはデータ処理効率を向上させ、データをエンコード、デコード、またはカプセル化する必要がないため、クライアント側での実装も簡単です。

概要

オープンソースRedisのSorted Set (Zsetとも呼ばれます) データ構造では、複数のディメンションではなく1つのディメンションでDOUBLEタイプのスコアをソートできます。 たとえば、IEEE Standard For Floating-Point Arithmetic (IEEE 754) 標準を使用して、スコアデータを連結して多次元ソートを実装できます。 しかし、この方法は、複雑なロジック、精度の低下、EXZINCRBYコマンドが利用できないなどの欠点があります。

多次元ソートの実装を支援するために、Alibaba CloudはTairZsetデータ構造を開発しました。 上記の方法と比較して、TairZsetには次の利点があります。

  • DOUBLEタイプのスコアを最大256のディメンションに基づいてソートできます。 スコアは、優先順位に基づいて左から右に表示されます。

    多次元ソートでは、左スコアは右スコアよりも高い優先度を有する。 例として、score1#score2#score3形式の3次元スコアの比較を取り上げます。 TairZsetは、複数の3次元スコアのスコアを比較し、スコアが等しい場合にのみスコア2に進む。 スコアが等しくない場合、スコアのランキングは、関係する3次元スコアのランキングを表す。 同じ論理によって、score2が等しい場合にのみscore3が比較される。 すべてのスコアが等しく、同じことがスコア2およびスコア3に当てはまる場合、関与する多次元スコアはASCIIソート順にランク付けされる。

    わかりやすくするために、数値記号 (#) を小数点 (.) として想像できます。 このように、0#99 < 99#90 < 99#99は、0.99 < 99.90 < 99.99として見ることができる。

  • EXZINCRBYコマンドをサポートします。 現在のデータを取得し、データに増分を適用してから、データをTairに書き戻す操作を実行する必要がなくなりました。

  • オープンソースのRedis Zsetと同様のAPIをサポートします。

  • 実装できます 通常のリーダーボード および 分散型リーダーボード マルウェアを検出します。 マルウェアが検出されると、この機能はアラートイベントを生成します。

  • オープンソースのTairJedisクライアントをサポートします。 TairJedisクライアントの詳細については、GitHubをご覧ください。 データのエンコード、デコード、カプセル化を行うことなく、TairJedisクライアントを使用できます。 オープンソースコードを参照して、他のプログラミング言語のクライアントをカプセル化することもできます。

典型的なシナリオ

TairZsetは、ゲーム、ライブストリーミング、音楽、eコマースなどの業界で使用するリーダーボードを実装するのに理想的です。 次のセクションでは、いくつかの例を示します。

  • ライブストリーミング業界のリーダーボード: ライブマッチでは、コメンテーターは現在の人気度でソートされます。 人気値が同じである場合、それらは彼らのいいねの数によってソートされる。 いいねの数も同じであれば、彼らは彼らの贈り物の価値によってソートされます。

  • メダルのリーダーボード: 参加者は、金、銀、銅メダルの数で分類されます。 金メダルの数が同じ場合は、銀メダルの数でソートされます。 銀メダルの数も同じであれば、銅メダルの数でソートされます。

  • ゲーム業界のリーダーボード: プレイヤーは、スコア、タスクの完了速度、達成レベルなど、複数の要因に基づいてソートされます。

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

ベストプラクティス

前提条件

インスタンスは、マイナーバージョンが1.7.1以降のTair DRAMベースのインスタンスです。

説明

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

注意事項

管理するTairZsetデータは、Tairインスタンスに保存されます。

TairZsetコマンド

コマンド

構文

説明

EXZADD

EXZADDキー [NX | XX] [CH] [INCR] スコアメンバー [スコアメンバー...]

指定された要素とそのスコアをTairZsetキーに格納します。 複数のスコアと要素を指定できます。

説明

多次元ソートを実装するには、各次元のスコアを数値記号 (#) で区切ることができます。 例: 111#222#121 キーのすべての要素は同じスコア形式でなければなりません。

EXZINCRBY

EXZINCRBYキー増分メンバー

TairZsetキーの要素のスコアを増加させます。 incrementは、スコアに追加する値を示します。

EXZSCORE

EXZSCOREキーメンバー

TairZsetキーの要素のスコアを返します。 キーまたは要素が存在しない場合、nilの値が返されます。

EXZRANGE

EXZRANGEキーmin max [WITHSCORES]

指定されたスコア範囲内のTairZsetキーの要素を返します。

EXZREVRANGE

EXZREVRANGEキーmin max [WITHSCORES]

指定されたスコア範囲内のTairZsetキーの要素を返します。 要素はスコアの降順で格納され、同じスコアの要素は逆の辞書順でソートされます。

説明

このコマンドはEXZRANGEと似ていますが、結果を逆にソートします。

EXZRANGEBYSCORE

EXZRANGEBYSCOREキーmin max [WITHSCORES] [LIMITオフセット数]

スコアがmin値以上、max値以下のTairZsetキーの要素を返します。 返された要素はスコアによって昇順にソートされ、同じスコアを持つ要素は辞書式の順序で返されます。

EXZREVRANGEBYSCORE

EXZREVRANGEBYSCOREキーmax min [WITHSCORES] [LIMITオフセット数]

スコアがmin値以上、max値以下のTairZsetキーの要素を返します。 TairZset要素のデフォルトのソートとは異なり、このコマンドによって返される要素はスコアの降順でソートされ、同じスコアを持つ要素は逆の辞書式順序でソートされます。

説明

このコマンドはEXZRANGEBYSCOREと似ていますが、このコマンドは結果を逆にソートし、minの前にmaxを配置する点が異なります。

EXZRANGEBYLEX

EXZRANGEBYLEXキーmin max [LIMITオフセット数]

キーのすべての要素が同じスコアを持つ場合、スコアがmin値とmax値の間にあるTairZsetキーの要素を返します。 これにより、要素が辞書式順序で確実にソートされます。

EXZREVRANGEBYLEX

EXZREVRANGEBYLEXキーmax min [LIMITオフセット数]

キーのすべての要素が同じスコアを持つ場合、スコアが最小値と最大値の間にあるTairZsetキーの要素を返します。 これにより、要素が辞書式順序で確実にソートされます。

説明

このコマンドはEXZRANGEBYLEXと似ていますが、このコマンドは結果を逆にソートし、minの前にmaxを配置します。

EXZREM

EXZREMキーメンバー [メンバー...]

TairZsetキーから指定された要素を削除します。 指定された要素が存在しない場合、その要素は無視されます。

EXZREMRANGEBYSCORE

EXZREMRANGEBYSCOREキーmin max

スコアがmin値以上で、かつmax値以下の要素をTairZsetキーから削除します。

EXZREMRANGEBYRANK

EXZREMRANGEBYRANKキースタートストップ

ランクがstart値とstop値の範囲内にある要素をTairZsetキーから削除します。

EXZREMRANGEBYLEX

EXZREMRANGEBYLEXキーmin max

キーのすべての要素が同じスコアを持つ場合、スコアが最小値と最大値の間にあるTairZsetキーの要素を削除します。 これにより、要素が辞書式順序で確実にソートされます。

説明

minパラメーターとmaxパラメーターを使用して、EXZREMRANGEBYLEXコマンドとEXZRANGEBYLEXコマンドに同じ範囲を指定した場合、EXZREMRANGEBYLEXコマンドによって削除される要素は、EXZRANGEBYLEXコマンドによって返される要素と同じになります。

EXZCARD

EXZCARDキー

TairZsetキーのカーディナリティを返します。 カーディナリティは、キー内の要素の数を示します。

EXZRANK

EXZRANKキーメンバー

TairZsetキーの要素のランクを返します。 ランクはスコアで昇順にソートされます。 ランクはゼロベースの番号付けスキームを使用し、スコアが最も低い要素のランクは0です。 ランクはインデックスとも呼ばれます。

EXZREVRANK

EXZREVRANKキーメンバー

TairZsetキーの要素のランクを返します。 ランクはスコアの降順でソートされます。 ランクはゼロベースの番号付けスキームを使用し、最も高いスコアを持つ要素のランクは0です。 ランクはインデックスとも呼ばれます。

説明

このコマンドはEXZRANKと似ていますが、結果を逆にソートします。

EXZCOUNT

EXZCOUNTキーmin max

スコアがmin値とmax値の間にあるTairZsetキーの要素数を返します。

EXZLEXCOUNT

EXZLEXCOUNTキーmin max

キーのすべての要素が同じスコアを持つ場合、スコアが最小値と最大値の間にあるTairZsetキーの要素の数を返します。 これにより、要素が辞書式順序で確実にソートされます。

EXZRANKBYSCORE

EXZRANKBYSCOREキースコア

TairZsetキーで指定された要素スコアのランクを計算します。 ランクはスコアで昇順にソートされます。 ランクはゼロベースの番号付けスキームを使用し、スコアが最も低い要素のランクは0です。 ランクはインデックスとも呼ばれます。

説明

スコアが存在しない場合、キー内のスコアの推定ランクが返されます。 スコアが既に存在する場合、Tairは、キー内の既存のスコアの前にスコアをランク付けする。

EXZREVRANKBYSCORE

EXZREVRANKBYSCOREキースコア

TairZsetキーで指定された要素スコアのランクを計算します。 ランクはスコアの降順でソートされます。 ランクはゼロベースの番号付けスキームを使用し、最も高いスコアを持つ要素のランクは0です。 ランクはインデックスとも呼ばれます。

説明

スコアが存在しない場合、キー内のスコアの推定ランクが返されます。 スコアが既に存在する場合、Tairは、キー内の既存のスコアの後ろにスコアをランク付けする。

DEL

DELキー [キー...]

1つ以上のTairZsetキーを削除します。

説明

このトピックで使用されるコマンド構文の規則を次に示します。

  • Uppercase keyword: commandキーワードを示します。

  • イタリックテキスト: 変数を示します。

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

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

  • ...: このシンボルの前にあるパラメーターを繰り返し指定できることを示します。

EXZADD

項目

説明

構文

EXZADDキー [NX | XX] [CH] [INCR] スコアメンバー [スコアメンバー...]

時間の複雑さ

O(N)

コマンド説明

指定された要素とそのスコアをTairZsetキーに格納します。 複数のスコアと要素を指定できます。 システムは、キーと要素が存在するかどうかに基づいて異なる戦略を使用します。

説明

多次元ソートを実装するには、各次元のスコアを数値記号 (#) で区切ることができます。 例: 111#222#121 キーのすべての要素は同じスコア形式でなければなりません。

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

  • キーが存在しない場合、システムはTairZsetキーを作成し、要素をキーに追加します。

  • 要素がすでにキーの要素である場合、要素のスコアが更新され、要素が正しい位置に再挿入されて、ソートの中断を回避します。

  • 各スコアは、倍精度浮動小数点数のストリングによって表される。 + infと-infの値は有効な値です。

パラメーター

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

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

  • CH: 追加された新しい要素の数から、変更された要素の総数にコマンド出力を変更します。

    説明

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

  • INCR: このパラメーターを指定すると、EXZADDはEXZINCRBYと同様に動作します。これは、このモードで指定できるスコアと要素のペアが1つだけであることを示します。

Output

出力は整数である。 次のルールは、出力について説明します。

  • パラメーターを指定しない場合、出力はTairZsetキーに追加された要素の数になります。

  • 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キー増分メンバー

時間の複雑さ

O (ログ (N))

コマンド説明

TairZsetキーの要素のスコアを増加させます。 incrementは、スコアに追加する値を示します。 システムは、キーと要素が存在するかどうかに基づいて異なる戦略を使用します。

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

  • キーが存在しない場合、システムはTairZsetキーを作成し、要素をキーの唯一の要素として使用します。

  • キーに要素がない場合、システムは、スコアが増分値である要素をキーに追加します。これは、要素の元のスコアが0.0であると想定されることを示します。

説明
  • 多次元ソートを実装するには、各次元のスコアを数値記号 (#) で区切ることができます。 例: 111#222#121 キーのすべての要素は同じスコア形式でなければなりません。

  • スコア値は数値の文字列であり、倍精度浮動小数点数の文字列にすることができます。 要素のスコアを下げたい場合は、負の数を指定します。

パラメーター

なし

Output

文字列としての要素の新しいスコア。 多次元スコアが使用される場合、スコアは "score1# score2# score3#..." 形式で返されます。 例: 2#0#6

例:

サンプルコマンド:

EXZINCRBY testkey 2#2#1 a

サンプル出力:

"3#2#4"

EXZSCORE

項目

説明

構文

EXZSCOREキーメンバー

時間の複雑さ

O(1)

コマンド説明

TairZsetキーの要素のスコアを返します。 キーまたは要素が存在しない場合、nilの値が返されます。

パラメーター

なし

Output

文字列としての要素のスコア。 多次元スコアが使用される場合、スコアは "score1# score2# score3#..." 形式で返されます。 例: 2#0#6

例:

サンプルコマンド:

EXZSCORE testkey a

サンプル出力:

"3#2#4"

贅沢

項目

説明

構文

EXZRANGEキーmin max [WITHSCORES]

時間の複雑さ

ここで、NはTairZsetキー内の要素の数を示し、Mは返される要素の数を示す。

コマンド説明

指定されたスコア範囲内のTairZsetキーの要素を返します。

パラメーター

  • minおよびmax: ゼロベースのインデックスを示します。0は最初の要素、1は次の要素です。 他の要素も同じルールに従います。 2つのパラメーターを使用して、閉じた間隔を指定できます。

    説明
    • インデックスは、返されるTairZset要素の末尾からのオフセットを示す負の数にすることもできます。 たとえば、-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" 

Output

指定されたスコア範囲内の要素のリスト。 WITHSCORESパラメーターを指定すると、要素のスコアが返されます。

例:

サンプルコマンド:

EXZRANGE testkey 0 -1 WITHSCORES

サンプル出力:

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

EXZREVRANGE

項目

説明

構文

EXZREVRANGEキーmin max [WITHSCORES]

時間の複雑さ

ここで、NはTairZsetキー内の要素の数を示し、Mは返される要素の数を示す。

コマンド説明

指定されたスコア範囲内のTairZsetキーの要素を返します。 要素はスコアの降順で格納され、同じスコアの要素は逆の辞書順でソートされます。

説明

このコマンドはEXZRANGEと似ていますが、結果を逆にソートします。

パラメーター

  • minおよびmax: ゼロベースのインデックスを示します。0は最初の要素、1は次の要素です。 他の要素も同じルールに従います。 2つのパラメーターを使用して、閉じた間隔を指定できます。

    説明
    • インデックスは、返されるTairZset要素の末尾からのオフセットを示す負の数にすることもできます。 たとえば、-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" 

Output

指定されたスコア範囲内の要素のリスト。 WITHSCORESパラメーターを指定すると、要素のスコアが返されます。

例:

サンプルコマンド:

EXZREVRANGE testkey 0 -1 WITHSCORES

サンプル出力:

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

EXZRANGEBYSCORE

項目

説明

構文

EXZRANGEBYSCOREキーmin max [WITHSCORES] [LIMITオフセット数]

時間の複雑さ

ここで、NはTairZsetキー内の要素の数を示し、Mは返される要素の数を示す。

説明

Mを定数とすると、この式はO(log(N)) とみなすことができる。 たとえば、最初の10個の要素が常にLIMIT句を使用して返されるように指定できます。

コマンド説明

スコアがmin値以上、max値以下のTairZsetキーの要素を返します。 返される要素はスコアで昇順にソートされます。 同じスコアを持つ要素は、辞書式の順序で返されます。

パラメーター

  • min: 最低スコアを示します。 max: 最高のスコアを示します。 多次元スコアが使用される場合、各次元のスコアは数字記号 (#) で区切られます。

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

    • デフォルトのスコア範囲は閉じた間隔です。 開いている間隔を指定するには、かっこを追加します。 たとえば、(1 5) は、スコアが1より大きく、5以下の要素が返されることを示します。

  • WITHSCORES: 要素のスコアを返します。

  • LIMIT offset count: 返される要素の数と間隔を指定します。 countを負の整数に設定すると、指定されたオフセットから始まるすべての要素が返されます。

    説明

    offset値が大きい場合、要素が返される前に、オフセット要素を識別するためにキーをトラバースする必要があります。 これは時間の複雑さを増大させる。

Output

指定されたスコア範囲内の要素のリスト。 WITHSCORESパラメーターを指定すると、要素のスコアが返されます。

例:

サンプルコマンド:

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

サンプル出力:

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

EXZREVRANGEBYSCORE

項目

説明

構文

EXZREVRANGEBYSCOREキーmax min [WITHSCORES] [LIMITオフセット数]

時間の複雑さ

ここで、NはTairZsetキー内の要素の数を示し、Mは返される要素の数を示す。

説明

Mを定数とすると、この式はO(log(N)) とみなすことができる。 たとえば、最初の10個の要素が常にLIMIT句を使用して返されるように指定できます。

コマンド説明

スコアがmin値以上、max値以下のTairZsetキーの要素を返します。 TairZset要素のデフォルトのソートとは異なり、このコマンドによって返される要素はスコアの降順でソートされ、同じスコアを持つ要素は逆の辞書式順序でソートされます。

説明

このコマンドはEXZRANGEBYSCOREと似ていますが、このコマンドは結果を逆にソートし、minの前にmaxを配置する点が異なります。

パラメーター

  • min: 最低スコアを示します。 max: 最高のスコアを示します。 多次元スコアが使用される場合、各次元のスコアは数字記号 (#) で区切られます。

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

    • デフォルトのスコア範囲は閉じた間隔です。 開いている間隔を指定するには、かっこを追加します。 たとえば、(1 5) は、スコアが1より大きく、5以下の要素が返されることを示します。

  • WITHSCORES: 要素のスコアを返します。

  • LIMIT offset count: 返される要素の数と間隔を指定します。 countを負の整数に設定すると、指定されたオフセットから始まるすべての要素が返されます。

    説明

    offset値が大きい場合、要素が返される前に、オフセット要素を識別するためにキーをトラバースする必要があります。 これは時間の複雑さを増大させる。

Output

指定されたスコア範囲内の要素のリスト。 WITHSCORESパラメーターを指定すると、要素のスコアが返されます。

例:

サンプルコマンド:

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

サンプル出力:

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

EXZRANGEBYLEX

項目

説明

構文

EXZRANGEBYLEXキーmin max [LIMITオフセット数]

時間の複雑さ

ここで、NはTairZsetキー内の要素の数を示し、Mは返される要素の数を示す。

説明

Mを定数とすると、この式はO(log(N)) とみなすことができる。 たとえば、最初の10個の要素が常にLIMIT句を使用して返されるように指定できます。

コマンド説明

キーのすべての要素が同じスコアを持つ場合、スコアがmin値とmax値の間にあるTairZsetキーの要素を返します。 これにより、要素が辞書式順序で確実にソートされます。

説明
  • キーの要素のスコアが異なる場合、返される要素は不明です。

  • memcmp() C関数を使用して、2つの文字列要素をバイトごとに比較できます。 要素は、前述の比較に基づいて昇順でソートされます。 2つの文字列に同じ部分文字列が含まれている場合、長い文字列には短い文字列よりも大きな値が割り当てられます。

パラメーター

  • min: 要素名の最小文字列表現値を示します。 max: 要素名の最大文字列表現値を示します。 文字の間隔を指定する必要があります。 次のセクションでは、間隔を指定する方法を示します。

    • 開いている間隔を指定するには、かっこを追加します。 例: (a)

    • 閉じた間隔を指定するには、ブラケットを追加します。 例: [a.

    説明

    + は正の無限大を示し、-は負の無限大を示します。

  • LIMIT offset count: 返される要素の数と間隔を指定します。 countを負の整数に設定すると、指定されたオフセットから始まるすべての要素が返されます。

    説明

    offset値が大きい場合、要素が返される前に、オフセット要素を識別するためにキーをトラバースする必要があります。 これは時間の複雑さを増大させる。

Output

スコア値が指定された範囲内にある要素のリスト。

例:

サンプルコマンド:

EXZRANGEBYLEX zzz [a [b

]

サンプル出力:

1) "aba"
2) "abc" 

EXZREVRANGEBYLEX

項目

説明

構文

EXZREVRANGEBYLEXキーmax min [LIMITオフセット数]

時間の複雑さ

ここで、NはTairZsetキー内の要素の数を示し、Mは返される要素の数を示す。

説明

Mを定数とすると、この式はO(log(N)) とみなすことができる。 たとえば、最初の10個の要素が常にLIMIT句を使用して返されるように指定できます。

コマンド説明

キーのすべての要素が同じスコアを持つ場合、スコアが最小値と最大値の間にあるTairZsetキーの要素を返します。 これにより、要素が辞書式順序で確実にソートされます。

説明

このコマンドはEXZRANGEBYLEXと似ていますが、このコマンドは結果を逆にソートし、minの前にmaxを配置します。

パラメーター

  • min: 要素名の最小文字列表現値を示します。 max: 要素名の最大文字列表現値を示します。 文字の間隔を指定する必要があります。 次のセクションでは、間隔を指定する方法を示します。

    • 開いている間隔を指定するには、かっこを追加します。 例: (a)

    • 閉じた間隔を指定するには、ブラケットを追加します。 例: [a.

    説明

    + は正の無限大を示し、-は負の無限大を示します。

  • LIMIT offset count: 返される要素の数と間隔を指定します。 countを負の整数に設定すると、指定されたオフセットから始まるすべての要素が返されます。

    説明

    offset値が大きい場合、要素が返される前に、オフセット要素を識別するためにキーをトラバースする必要があります。 これは時間の複雑さを増大させる。

Output

スコア値が指定された範囲内にある要素のリスト。

例:

サンプルコマンド:

EXZREVRANGEBYLEX zzz [b [a

サンプル出力:

1) "abc"
2) "aba"

EXZREM

項目

説明

構文

EXZREMキーメンバー [メンバー...]

時間の複雑さ

O(M * log(N)) であり、ここで、Nは、TairZsetキーにおける要素の数を示し、Mは、除去されるべき要素の数を示す。

コマンド説明

TairZsetキーから指定された要素を削除します。 指定された要素が存在しない場合、その要素は無視されます。

説明

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

パラメーター

なし

Output

キーから削除された要素の数。 存在しない要素は含まれません。

例:

サンプルコマンド:

EXZREM testkey a

サンプル出力:

(integer) 1

EXZREMRANGEBYSCORE

項目

説明

構文

EXZREMRANGEBYSCOREキーmin max

時間の複雑さ

O(log(N)+ M) であり、ここで、Nは、TairZsetキーにおける要素の数を示し、Mは、除去されるべき要素の数を示す。

コマンド説明

スコアがmin値以上で、かつmax値以下の要素をTairZsetキーから削除します。

パラメーター

min: 最低スコアを示します。 max: 最高のスコアを示します。 多次元スコアが使用される場合、各次元のスコアは数字記号 (#) で区切られます。

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

  • デフォルトのスコア範囲は閉じた間隔です。 開いている間隔を指定するには、かっこを追加します。 たとえば、EXZREMRANGEBYSCORE (1 5) は、スコアが1より大きく、5以下の要素が削除されることを示します。

Output

削除された要素の数。

例:

サンプルコマンド:

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

サンプル出力:

(integer) 1

EXZREMRANGEBYRANK

項目

説明

構文

EXZREMRANGEBYRANKキースタートストップ

時間の複雑さ

O(log(N)+ M) であり、ここで、Nは、TairZsetキーにおける要素の数を示し、Mは、除去されるべき要素の数を示す。

コマンド説明

ランクがstart値とstop値の範囲内にある要素をTairZsetキーから削除します。

パラメーター

startstopはどちらもゼロベースのインデックスを示します。 0は、スコアが最も低い要素を示します。 これらのインデックスは負の数にすることができます。 これらの数は、最も高いスコアを有する要素で始まるオフセットを示す。 たとえば、-1はスコアが最も高い要素を示し、-2はスコアが2番目に高い要素を示します。 他の要素も同じルールに従います。

Output

削除された要素の数。

例:

サンプルコマンド:

EXZREMRANGEBYRANK testkey 0 1EXZREVRANGEBYSCORE

サンプル出力:

(integer) 1

EXZREMRANGEBYLEX

項目

説明

構文

EXZREMRANGEBYLEXキーmin max

時間の複雑さ

O(log(N)+ M) であり、ここで、Nは、TairZsetキーにおける要素の数を示し、Mは、除去されるべき要素の数を示す。

コマンド説明

キーのすべての要素が同じスコアを持つ場合、スコアが最小値と最大値の間にあるTairZsetキーの要素を削除します。 これにより、要素が辞書式順序で確実にソートされます。

説明

minパラメーターとmaxパラメーターを使用して、EXZREMRANGEBYLEXコマンドとEXZRANGEBYLEXコマンドに同じ範囲を指定した場合、EXZREMRANGEBYLEXコマンドによって削除される要素は、EXZRANGEBYLEXコマンドによって返される要素と同じになります。

パラメーター

min: 要素名の最小文字列表現値を示します。 max: 要素名の最大文字列表現値を示します。 文字の間隔を指定する必要があります。 次のセクションでは、間隔を指定する方法を示します。

  • 開いている間隔を指定するには、かっこを追加します。 例: (a)

  • 閉じた間隔を指定するには、ブラケットを追加します。 例: [a.

Output

削除された要素の数。

例:

サンプルコマンド:

EXZREMRANGEBYLEX [a [b

]

サンプル出力:

(integer) 2

EXZCARD

項目

説明

構文

EXZCARDキー

時間の複雑さ

O(1)

コマンド説明

TairZsetキーのカーディナリティを返します。 カーディナリティは、キー内の要素の数を示します。

パラメーター

なし

Output

キーに含まれる要素の数。 キーが存在しない場合、値0が返されます。

例:

サンプルコマンド:

EXZCARD testkey

サンプル出力:

(integer) 2

EXZRANK

項目

説明

構文

EXZRANKキーメンバー

時間の複雑さ

O (ログ (N))

コマンド説明

TairZsetキーの要素のランクを返します。 ランクはスコアで昇順にソートされます。 ランクはゼロベースの番号付けスキームを使用し、スコアが最も低い要素のランクは0です。 ランクはインデックスとも呼ばれます。

パラメーター

なし

Output

  • 要素が存在する場合、要素の整数ランクが返されます。

  • キーまたは要素が存在しない場合、nilの値が返されます。

例:

サンプルコマンド:

EXZRANK testkey b

サンプル出力:

(integer) 0

EXZREVRANK

項目

説明

構文

EXZREVRANKキーメンバー

時間の複雑さ

O (ログ (N))

コマンド説明

TairZsetキーの要素のランクを返します。 ランクはスコアの降順でソートされます。 ランクはゼロベースの番号付けスキームを使用し、最も高いスコアを持つ要素のランクは0です。 ランクはインデックスとも呼ばれます。

説明

このコマンドはEXZRANKと似ていますが、結果を逆にソートします。

パラメーター

なし

Output

  • 要素が存在する場合、要素の整数ランクが返されます。

  • キーまたは要素が存在しない場合、nilの値が返されます。

例:

サンプルコマンド:

EXZREVRANK testkey b

サンプル出力:

(integer) 1

EXZCOUNT

項目

説明

構文

EXZCOUNTキーmin max

時間の複雑さ

O(log(N)) であり、NはTairZsetキーの要素数を示す。

説明

このコマンドは、要素ランクを使用してクエリ範囲を取得します。 したがって、このコマンドに関連付けられたワークロードは、範囲のサイズに比例しません。

コマンド説明

スコアがmin値とmax値の間にあるTairZsetキーの要素数を返します。

パラメーター

min: 最低スコアを示します。 max: 最高のスコアを示します。 多次元スコアが使用される場合、各次元のスコアは数字記号 (#) で区切られます。

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

  • デフォルトのスコア範囲は閉じた間隔です。 開いている間隔を指定するには、かっこを追加します。 たとえば、(1 5) は、スコアが1より大きく、5以下の要素が返されることを示します。

Output

指定されたスコア範囲内の要素の整数。

例:

サンプルコマンド:

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

サンプル出力:

(integer) 1

EXZLEXCOUNT

項目

説明

構文

EXZLEXCOUNTキーmin max

時間の複雑さ

O(log(N)) であり、NはTairZsetキーの要素数を示す。

説明

このコマンドは、要素ランクを使用してクエリ範囲を取得します。 したがって、このコマンドに関連付けられたワークロードは、範囲のサイズに比例しません。

コマンド説明

キーのすべての要素が同じスコアを持つ場合、スコアが最小値と最大値の間にあるTairZsetキーの要素の数を返します。 これにより、要素が辞書式順序で確実にソートされます。

説明
  • キーの要素のスコアが異なる場合、返される要素は不明です。

  • memcmp() C関数を使用して、2つの文字列要素をバイトごとに比較できます。 要素は、前述の比較に基づいて昇順でソートされます。 2つの文字列に同じ部分文字列が含まれている場合、長い文字列には短い文字列よりも大きな値が割り当てられます。

パラメーター

min: 要素名の最小文字列表現値を示します。 max: 要素名の最大文字列表現値を示します。 文字の間隔を指定する必要があります。 次のセクションでは、間隔を指定する方法を示します。

  • 開いている間隔を指定するには、かっこを追加します。 例: (a)

  • 閉じた間隔を指定するには、ブラケットを追加します。 例: [a.

Output

指定されたスコア範囲内の要素の整数。

例:

サンプルコマンド:

EXZLEXCOUNT zzz [a [b

]

サンプル出力:

(integer) 2

EXZRANKBYSCORE

項目

説明

構文

EXZRANKBYSCOREキースコア

時間の複雑さ

O (ログ (N))

コマンド説明

TairZsetキーで指定された要素スコアのランクを計算します。 ランクはスコアで昇順にソートされます。 ランクはゼロベースの番号付けスキームを使用し、スコアが最も低い要素のランクは0です。 ランクはインデックスとも呼ばれます。

説明

スコアが存在しない場合、キー内のスコアの推定ランクが返されます。 スコアが既に存在する場合、Tairは、キー内の既存のスコアの前にスコアをランク付けする。

パラメーター

なし

Output

キー内のスコアのランク。

例:

サンプルコマンド:

EXZRANKBYSCORE testkey 2#0#2 

サンプル出力:

(integer) 1

EXZREVRANKBYSCORE

項目

説明

構文

EXZREVRANKBYSCOREキースコア

時間の複雑さ

O (ログ (N))

コマンド説明

TairZsetキーで指定された要素スコアのランクを計算します。 ランクはスコアの降順でソートされます。 ランクはゼロベースの番号付けスキームを使用し、最も高いスコアを持つ要素のランクは0です。 ランクはインデックスとも呼ばれます。

説明

スコアが存在しない場合、キー内のスコアの推定ランクが返されます。 スコアが既に存在する場合、Tairは、キー内の既存のスコアの後ろにスコアをランク付けする。

パラメーター

なし

Output

キー内のスコアのランク。

例:

サンプルコマンド:

EXZREVRANKBYSCORE testkey 2#0#2 

サンプル出力:

(integer) 1