2016-12-07 12 views
1
127.0.0.1:6379> keys * 

1) "trending_showrooms" 
2) "trending_hashtags" 
3) "trending_mints" 

127.0.0.1:6379> sort trending_mints by *->id DESC LIMIT 0 12 

1) "mint_14216" 
2) "mint_14159" 
3) "mint_14158" 
4) "mint_14153" 
5) "mint_14151" 
6) "mint_14146" 

キーの有効期限は切れていますが、キーは内側に設定されています。レディスで期限切れキーを自動的に削除する必要があります期限切れの鍵を自動的にセットから削除する方法はありますか?

+0

「セットから期限切れの鍵を自動的に削除する方法は?」 - 明確にするために、セット内の個々のメンバーを期限切れにしたい、またはセットキーとその中のすべてを期限切れにしたいですか? – davissp14

+0

はいセット内の個々のメンバーを期限切れにしたい –

答えて

0

完全に準備ができて、このページをしてください総括https://redis.io/topics/notifications

を、あなたはPUB/SUBメッセージを聞いセンチネルプログラムを持っている必要がありますし、あなたが通知期限切れにたKeyEventを有効にするためにredis.confファイルを変更する必要があります。redis.conf

を:ENABするためには

notify-keyspace-events Ex 

ルすべての文字が続いてセンチネルプログラムは、チャネル[email protected]__:delに耳を傾ける必要があり、以下の表

E  Keyevent events, published with [email protected]<db>__ prefix. 
x  Expired events (events generated every time a key expires) 

に応じて特別な意味を持っている 複数の文字からなる非空の文字列が使用されている機能、、、データベースが0の場合ゼロ以外を使用している場合は、データベース番号を変更してください。

チャンネルを購読し、有効期限が切れているkeyを受信した場合は、SREM trending_mints keyを発行してセットから削除するだけです。

重要

キーがアクセスされ、 は、上記システムのいずれかによって期限切れであることが判明したときに期限切れイベントは結果として何 保証はRedisのサーバになることがない、生成されますキーの有効期間が0になった時点で有効期限が切れた イベントを生成することができます。

なしコマンドのターゲット常にキーの場合、および 関連するTTLを持つ多くのキーがあり、時間 との間に有意な遅延が発生する場合があります生きるための重要な時間がゼロに低下し、時間が期限切れのイベントが です生成される。

Redisサーバーが キーを削除し、理論的には0の値 に達していない場合、基本的に期限切れのイベントが生成されます。

ので、キーがによる期限切れに削除されますが、通知は、TTLがゼロになった瞬間に発生することが保証されていません。

あなたのセンチネルプログラムがPUB/SUBメッセージを逃した場合は、それはもう、別の時間に通知されません! (これは上のリンクにもあります)

+0

"キーは期限切れですが、キーはセット内にあります" - 私は彼がセット内のメンバーを指していると思います。 – davissp14

+0

こんにちは@ davissp14、私は彼が重複した構造を持っていると思う、各セットメンバーのための1つの単純なキー、これらのシンプルなキーが期限切れに設定されています(少なくとも彼はこのようにすることができる)。 – Niloct

関連する問題