1

中間データを保持するために redis を使用している小さなアプリケーションに取り組んでいます。データを挿入した後、挿入したのと同じ順序でデータをリロードする必要があります。

メソッドを使用keysしてすべてのキーを取得していますが、返されたキーの順序が挿入された順序と同じではありません。

4

2 に答える 2

2

挿入されたキーの別のリストを保持することにより、自分で順序を維持する必要があります。だから、代わりに

SET foo, bar

あなたはこのようなことをするかもしれません:

SET foo, bar
RPUSH insert_order, foo

それからあなたはすることができます

LRANGE insert_order, 0, 100

最初の 100 個の設定フィールドを取得します。

実際の挿入 (更新ではなく) を追跡する場合は、たとえば、SETNX を使用できます。また、リストの代わりにソートされたセットを使用することもできます (@Leonid で言及)。

于 2013-10-14T10:23:06.430 に答える
1

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 のレコードで問題なく動作します (頻繁に読み取りと書き込みを行います)。ただし、ハッシュ サイズは頻繁に監視する必要があります。非常に急速に大きくなります。

于 2013-10-15T03:26:03.793 に答える