2017-12-31 189 views
1

私は24時間以内に有効期限が切れるユーザーのためのアイテムのリストを格納する方法を探しています。 Redisを使用してこれを達成する方法はありますか?私はリストを使い、各アイテムの有効期限を設定することを考えていましたが、よりよい方法はありますか?期限切れのエントリがあるリスト

答えて

3

いいえ、各アイテムの有効期限をLISTに設定することはできません。有効期限は、LIST全体に対してのみ設定できます。

あなたが望むものを達成するために、あなたは各項目のキーを持っている必要がありますが:

SET user1:item1 value EX 86400 
SET uesr1:iter2 value EX 86400 
SET user2:item1 value EX 86400 

指定したユーザーのすべてのアイテムを取得するには、パターン(または使用してSCANコマンドを使用することができますより良い性能を達成するためにKeyspace Notificationが、より複雑な作業で):

SCAN 0 MATCH user1:* 
2

受け入れ答えで述べたように、Redisの中に有効期限が唯一のキー・レベルで実行されます - ネストされた要素が期限切れにすることはできません。

期限切れの要素を含むリストを実装するには、ソートセットデータ構造を使用できます。すべてのメンバーのスコアは現在のエポックでなければなりません。挿入の順序はそのままです。値(メンバー)が一意でない場合、例えば、エポックを連結してので、それらを作る:

ZADD user1:items 1514822755 1514822755:value 
ZADD user1:items 1514822758 1514822758:value 

の項目を「有効期限切れ」には、-infからZREMRANGEBYSCOREを呼び出し、現在のエポックマイナス24時間。

関連する問題