あなたのターゲットはやや不明確なようです - すべてのレコードを Redis に保存しようとしていますか? その場合、テーブルには他にどのような列があり、table
それに対して実行する他のクエリは何ですか?
私はあなたの質問を額面どおりに受け止めますが、ほとんどの NoSQL データベース (Redis を含む) では、データを取得する方法に従ってデータを保存する必要があることに注意してください。過去 10,000 レコードの最小/最大作成日を取得したいと仮定すると、それらをソート済みセットに保持することをお勧めします。Sorted Set のメンバーは一意id
になり、そのスコアは作成日になります (エポック値を使用)。たとえば、ID 1、2、3 の行は、それぞれ日付 10、100、1000 に作成されます。
ZADD table 10 1 100 2 1000 3 ...
最小限の作成日を取得するのは今では簡単ZRANGE table 0 0 WITHSCORES
ですZRANGE table -1 -1 WITHSCORES
。唯一の「トリッキー」な部分は、Sorted Set が更新されていることを確認することです。そのため、新しいレコードごとに、セットから最小の ID を削除して新しい ID を追加する必要があります。疑似 Python コードでは、これは次のようになります。
def updateMinMaxSortedSet(id, date):
count = redis.zcount('table')
if count > 10000:
redis.zrem('table', id-10000)
redis.zadd('table', id, date)