中間データを保持するために redis を使用している小さなアプリケーションに取り組んでいます。データを挿入した後、挿入したのと同じ順序でデータをリロードする必要があります。
メソッドを使用keys
してすべてのキーを取得していますが、返されたキーの順序が挿入された順序と同じではありません。
中間データを保持するために redis を使用している小さなアプリケーションに取り組んでいます。データを挿入した後、挿入したのと同じ順序でデータをリロードする必要があります。
メソッドを使用keys
してすべてのキーを取得していますが、返されたキーの順序が挿入された順序と同じではありません。
挿入されたキーの別のリストを保持することにより、自分で順序を維持する必要があります。だから、代わりに
SET foo, bar
あなたはこのようなことをするかもしれません:
SET foo, bar
RPUSH insert_order, foo
それからあなたはすることができます
LRANGE insert_order, 0, 100
最初の 100 個の設定フィールドを取得します。
実際の挿入 (更新ではなく) を追跡する場合は、たとえば、SETNX を使用できます。また、リストの代わりにソートされたセットを使用することもできます (@Leonid で言及)。
URL のインデックスを作成し、挿入された順序でリストを取得するには、sorted set を使用する必要があります。
zadd <your_url_list_key> <inserted_time> <url>
1 つの URL の詳細データは別の場所に保存する必要があります。たとえば、ハッシュを使用します。
hset <your_url_data_key> <url> <url_data>
詳細データを redis に保存しない方がよいため、redis ハッシュを使用する代わりに、url 詳細データを mysql に保存する必要があります。
インデックスを作成する前にサイズを縮小することもできますmd5(url)
(完全な URL 値が url_data に格納されます)。
私のプロジェクトでは、ソートされたセットは、約 3mil のレコードで問題なく動作します (頻繁に読み取りと書き込みを行います)。ただし、ハッシュ サイズは頻繁に監視する必要があります。非常に急速に大きくなります。