RedisのSortedSetストレージタイプ

4022 ワード

Sorted-SetsタイプとSetsタイプは非常に似ており、文字列の集合であり、重複するメンバーが1つのSetに現れることは許されません.これらの主な違いは、Sorted-Setsの各メンバーにスコア(score)が関連付けられていることです.Redisは、スコアによって集合内のメンバーを小さいものから大きいものまでソートします.ただし、Sorted-Setsのメンバーは一意である必要がありますが、スコア(score)は繰り返し可能です.Sorted-setでメンバーを追加、削除、または更新することは、集合内のメンバー数の対数として非常に高速です.Sorted-Setsのメンバーは、集合内の位置が整然としているため、集合の中央にあるメンバーにアクセスしても非常に効率的です.実際、Redisが持つこの特徴は、他の多くのタイプのデータベースでは実現しにくい.言い換えれば、この点でRedisと同様の効率を達成するには、他のデータベースでのモデリングが非常に困難である.SortedSet関連コマンド:(1)ZADD key score member [score] [member]:パラメータで指定されたすべてのメンバーとそのスコアを指定keyのSorted-setに追加します.このコマンドでは、複数のscore/memberをパラメータとして指定できます.追加時にパラメータのメンバーがすでに存在する場合、コマンドはメンバーのスコアを新しい値に更新し、メンバーを新しい値に基づいて並べ替えます.キーが存在しない場合、このコマンドはキーの新しいSorted-Sets Valueを作成し、score/memberペアを挿入します.キーが既に存在するが、それに関連付けられたValueがSorted-Setsタイプでない場合、関連するエラーメッセージが返されます.このコマンドは、今回の操作で実際に挿入されたメンバーの数を返します.(2)ZCARDkey:このKeyに関連付けられたSorted-Setsに含まれるメンバー数を取得する.Sorted-Setsのメンバー数を返し、キーが存在しない場合は0を返します.(3)ZCOUNT key min max:このコマンドは、minとmaxの間のスコア(score)のメンバー数を取得するために使用されます.minおよびmaxパラメータについてさらに説明する必要があるのは、-infおよび+infがそれぞれSorted-Setsにおけるスコアの最高値および最低値を表すことである.デフォルトでは、minおよびmaxは閉区間範囲を表します.すなわち、min<=score<=max内のメンバーが返されます.ただし、minとmaxの前に追加することもできます(「文字は開区間を表します.例えば(min maxはminstopの場合、空のセットが返されます.stopが最大インデックス値より大きい場合、コマンドはstartからセットまでの最後のメンバーを返します.コマンドにオプションのパラメータWITHSCORESオプションがある場合、このコマンドは、value 1、score 1、value 2、score 2...などの各メンバーのスコア値を返した結果に含めます.startとstopの間のインデックスのメンバーリストを返します.(6)ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]:このコマンドは、minとmaxの間のスコアのすべてのメンバー、すなわち、式min<=score<=maxを満たすメンバーを返します.ここで、返されるメンバーは、スコアが低い順から高い順に返され、メンバーが同じスコアを持っている場合は、メンバーの辞書順に返されます.オプションパラメータLIMITは、戻りメンバーの数を制限するために使用します.オプションパラメータoffsetは、条件を満たすoffset番目のメンバーから戻り、count個のメンバーを返します.オプションパラメータWITHSCORESの意味は、ZRANGEのオプションの説明を参照してください.最後に、パラメータのminとmaxのルールは、コマンドZCOUNTを参照できます.指定した範囲内のスコアのメンバーのリストを返します.(7)ZRANK key member:Sorted-setのメンバーはすべてスコアが低い順に格納され、このコマンドはパラメータで指定されたメンバーの位置値を返し、0は最初のメンバーを表し、Sorted-setの中でスコアが最も低いメンバーである.メンバーが存在する場合は、その位置インデックス値が返されます.そうでなければnilを返します.(8)ZREM key member[member...]:このコマンドでは、パラメータに指定されたメンバーが削除され、存在しないメンバーは無視されます.キーに関連付けられたValueがSorted-setでない場合、対応するエラーメッセージが返されます.実際に削除されたメンバーの数を返します.(9)ZREVRANGE key start stop[WITHSCORES]:このコマンドの機能はZRANGEとほぼ同じであり、唯一の違いは、このコマンドが逆ソートによって指定された位置のメンバー、すなわち高い順から低い順を取得することである.メンバーに同じスコアがある場合は、降順辞書順にソートされます.指定したメンバーのリストを返します.(10)ZREVRANK key member:このコマンドの機能はZRANKとほぼ同じであり、唯一の違いは、コマンドが取得したインデックスが上位から下位にソートされた位置であり、同じ0が最初の要素、すなわちスコアが最も高いメンバーを表すことである.メンバーが存在する場合は、その位置インデックス値が返されます.そうでなければnilを返します.(11)ZSCORE key member:指定キーの指定メンバーのスコアを取得する.メンバーが存在する場合は、文字列としてスコアを返します.そうでない場合はnilを返します.(12)ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]:このコマンドは、ソート方式が高い点数から低い点数までのソートに基づいているほか、他の機能およびパラメータの意味はZRANGEBYSCOREと同じである.指定した範囲内のスコアのメンバーのリストを返します.(13)REMRANGEBYRANK key start stop:索引位置がstartとstopの間にあるメンバーを削除し、startとstopはいずれも0-based、すなわち0はスコアが最も低いメンバーを表し、-1は最後のメンバー、すなわちスコアが最も高いメンバーを表す.削除されたメンバーの数を返します.(14)ZREMRANGEBYSCORE key min max:minとmaxの間のスコアを持つすべてのメンバー、すなわち式min<=score<=maxを満たすすべてのメンバーを削除します.minとmaxパラメータについては開区間で表すことができ,具体的なルールはZCOUNTを参照する.削除されたメンバーの数.応用範囲:1).大規模なオンラインゲームのポイントランキングに使用できます.プレイヤーのスコアが変化するたびにZADDコマンドを実行してプレイヤーのスコアを更新し、その後ZRANGEコマンドでポイントTOP TENのユーザ情報を取得する.もちろんZRANKコマンドを利用してusernameでプレイヤーのランキング情報を取得することもできます.最後に、ZRANGEコマンドとZRANKコマンドを組み合わせて、あるプレイヤーのポイントに近い他のユーザの情報を迅速に取得します.2). Sorted-Setsタイプは、インデックスデータの構築にも使用できます.