sorted_set
- 新しいストレージ要件、データの並べ替えは、データの効果的なプレゼンテーションを容易にし、データ自身の特性に応じてデータを並べ替える方法を提供する必要があります。
- 必要なストレージ構造:ソート可能なデータを保持する新しいストレージモデル
- sorted_set 型: ソート可能なフィールドをセットのストレージ構造に追加します。
sorted_set 型データの基本操作
2.1 オペレーション
- データの追加
zadd <key> <score1> <member1> [score2 member2]
- 全データの取得
zrange <key> <start> <stop? [withscores]
zrevrange <key> <start> <stop? [withscores]
- データの削除
zrem <key> <member> [member...]
- 条件別のデータ取得
zrangebyscore <key> <min> <max> [withscores] [limit]
zrevrangebyscore <key> <min> <max> [withscores] [limit]
- データの条件付き削除
zremrangebyrank <key> <start> <stop>
zremrangebyscore <key> <min> <max>
- コレクションデータの総量を取得
zcard <key>
zcount <key> <min> <max>
- 交差演算とマージ演算を設定
zinterstore <destination> <numkeys> <key> [key...]
zunionstore <destination> <numkeys> <key> [key...]
2.2 注意
- minとmaxは検索クエリを修飾するために使用されます。
- startとstopはクエリの範囲を制限するために使用され、インデックスの開始と終了を示すためにインデックスで使用されます。
- offsetとcountは、クエリの範囲を制限するために使用され、クエリ結果で開始位置とデータの総量を示すために使用されます。
sorted_set 型データに対する拡張操作
- ビジネスシナリオ
- カテゴリー別リソースサイト・トップ10 = チャットルーム活動統計
- ゲームフレンドの親密さ
- 解決方法
- データに対応するインデックスを取得
zrank <key> <member>
zrevrank <key> <member>
- score値の取得と変更
zscore <key> <member>
zincrby <key> <increment> <member>
sorted_set型のデータ操作に関する注意点
- スコアによって保存されるデータ領域は、64ビット、整数範囲のlong型です。
- 倍精度浮動小数点数の特性上、精度が損なわれる可能性があります。
- sorted_setの基礎となるストレージは依然としてセット構造に基づいているため、データを複製することはできません。同じデータが繰り返し追加された場合、scoe値は何度も上書きされ、最後に変更された結果が保持されます。
sorted_set アプリケーションシナリオの種類
ビジネスシナリオ
基本サービス+付加価値サービスサイトでは、様々なタイプの会員体験が設定され、ユーザーは会員のメリットを十分に体験することができます。例えば、試用VIPの映画鑑賞、試用VIPのゲーム体験、試用VIPのクラウドディスクダウンロード、試用VIPのデータ閲覧など。正式なVIPユーザーにも対応する管理方法があります。ウェブサイトは定期的に投票と討論を開始します。期限付きで、期限を過ぎると取り消されます。このような期限切れの情報を効果的に管理する方法
解決方法
- タイムライン資格に基づくタスク処理では、処理時間をスコア値として記録します。ソート機能による処理順序の区別
- 次に処理すべき時間を記録し、期限が来たら対応するタスクを処理し、redisの記録を削除し、次に処理すべき時間を記録します。
- 新しいタスクが追加されたら、次に処理されるタスクの現在時刻を決定し、更新します。
- 例えば、1時間以内、1日以内、1週間以内、1ヶ月以内、1四半期以内、1年以内などです。1時間以内に処理されるキューに、これから処理されるタスクの数が含まれるように、ステップ・バイ・ステップで操作が強化されます。
sorted_set タイプ アプリケーション シナリオ 3
- ビジネスシナリオ
タスクやメッセージの重み付けの適用 タスクやメッセージが処理され、タスクキューやメッセージキューが形成されるとき、優先順位の高いタスクが最初に処理されることが保証されるべきであり、タスクの重み付け管理をどのように実現するか。
- 解決方法
- ウェイトのあるタスクについては、ウェイトの高いタスクを優先し、ウェイトを記録するためにスコアを使用します。