redis 順序セット zset は通常のセットと非常によく似ており、繰り返される要素のない文字列コレクションです。
違いは、順序付きセットの各メンバーがスコアに関連付けられており、このスコアを使用してセットのメンバーを最低スコア
から最高スコアまで並べ替えることです。
コレクションのメンバーはそれぞれ異なりますが、評価は繰り返すことができます。
要素は順序付けされているため、スコアまたは位置に基づいて要素の範囲をすばやく取得できます。
順序付きセット内の中間要素へのアクセスも非常に高速です。これは、順序付きセットを重複メンバーのないスマート列
テーブルとして使用できるためです。
zadd: 要素を追加します。
zrange: スコアを昇順で取得し、指定されたインデックス範囲の要素を取得します。 順序付けされた形式で格納された値を返します。指定された範囲のキー要素を設定します。返された要素は、スコアが低いものから高いものへと並べ替えられていると考えることができ、スコアが同じ場合は辞書順に並べ替えられます。
添字パラメータ start と stop はどちらも基数 0 です。つまり、0 は順序付きセットの最初のメンバーを表し、1 は順序付きセットの 2 番目のメンバーを表し、以下同様となります。
負の添字を使用することもできます。-1 は最後のメンバーを表し、-2 は最後から 2 番目のメンバーを表します。
zrange key 0 -1: すべての要素を取得できます
withscores: メンバーとそのスコア値を一緒に返します。返されるリストは value1、score1、…、valueN、scoreN の形式で表されます
利用可能なバージョン:
= 1.2.0
O(log(N) M)、N は順序付きセットのカーディナリティ、M は順序付きセットのカーディナリティです。結果セット。戻り値:
指定された間隔のスコア値 (オプション) を持つ順序付きセット メンバーのリスト
zrevrange: スコアの降順、指定されたインデックス範囲を取得します。 Element
ソートされたコレクション キーに格納されている要素の指定範囲を返します。返された要素は、スコアの最高値から順に並べられていると考えられます. スコアが同じ場合は、辞書順にソートされます。 添字パラメータ start と stop はどちらも基数 0 です。つまり、0 は順序付きセットの最初のメンバーを表し、1 は順序付きセットの 2 番目のメンバーを表し、以下同様となります。
負の添字を使用することもできます。-1 は最後のメンバーを表し、-2 は最後から 2 番目のメンバーを表します。
withscores: メンバーとそのスコア値を一緒に返します。返されるリストは、value1、score1、…、valueN、scoreN の形式で表されます
zrangebyscore : 指定されたスコア範囲内のデータをスコアの昇順で返します
#zincrby: 指定された増分を指定された要素のスコアに加算します
#zrem: コレクション内の複数の要素を削除します。
zremrangebyrank: インデックス範囲に基づいて要素を削除します。
# #zremrangebyscore: スコアの範囲からの要素の削除に基づいて
#zcount: 指定されたスコア範囲内の要素の数をカウントします
zrank: スコアに従って昇順で、セット内の要素のランキングを返します。
zrevrank: スコアの降順で、セット内の要素のランキング
zscore: コレクション内の指定された要素のスコアを返します
データ構造
SortedSet (zset) は、redis が提供する非常に特殊なデータ構造であり、内部的には 2 つのデータ構造が使用されます。
1. ハッシュ テーブル
は、Java の Map
要素によって定義され、時間計算量は O(1)
2. スキップ リスト
スキップ リストは実装が簡単で非常に優れたデータ構造です、挿入、削除、検索の計算量は O (logN)。
Java の ConcurrentSkipListSet と同様に、スコア値に応じてソートしてスキップ リストを生成するため、
位置順やスコア順に要素を素早くクエリできます。
以上がRedis 順序セット zset の知識ポイントは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。