Redisで動的データをページングする方法
Redis で動的データのページ区別を実現するには、ソート済みセット (sorted set) を使用してデータを保存し、ソート済みセットのページ区別機能を使用してページ区別操作を行います。
実現方法の一例を以下に示します。
- 動的データを、各データに対応する一つのメンバーを持つ順序集合として格納し、メンバーのスコアをデータのタイムスタンプやその他の適切な値とする。
- ZADD 動力 <スコア> <メンバー>
- 整列集合のページネーション機能を使って、指定範囲の動的データを取得します。たとえば、1ページ目(1ページあたり10個)の動的データを取得する場合:
- ZREVRANGE dynamics 0 9
- なお、ZREVRANGEコマンドを使用しているので大きいスコアが先頭から取得されます。小さいスコアから取得したい場合は、ZRANGEコマンドを使用してください。
- 各ページの動的データを取得するには、各ページのサイズと現在のページ番号から開始と終了のインデックスを計算し、それに応じたコマンドで取得します。
- ZCARDコマンドで順序付き集合の総メンバー数を取得し、その値と各ページのサイズから総ページ数を算出します。
Redisはメモリデータベースなので、大量のデータがあるとパフォーマンスの問題が発生する可能性があります。データ量が非常に多い場合は、他の分散データベースの使用か、データを複数のRedisインスタンスに分割して格納することを検討してください。