Redisでは、特定のキーではなく、セットのメンバーのTTL(有効期間)を設定できますか?セットメンバーのTTL
Redisのドキュメントで提案されているタグの構造を使用しています。データは単純なキーと値のペアであり、タグは各タグに対応するキーを含むセットです。予想通り
> SETEX id:id_1 100 'Lorem ipsum'
OK
> SADD tag:tag_1 id:id_1
(integer) 1
キーid:id_1
が期限切れになりますが、私はtag:tag_1
セットから対応するメンバを削除するための効率的な方法が表示されません。
私は、cronジョブを使用して、期限切れのキーを定期的に削除するスクリプトを使用しています。すべてのタグ名を別のセットに追加してから、すべてのタグを繰り返した後、それぞれに対応するすべてのID対応するキーが存在するかどうかをチェックし、存在しない場合はSREM
を呼び出します。
私はそれが効率的な方法ではないと思うし、おそらく複数のタグ(SINTER
)で検索のパフォーマンスに影響するセットのサイズは、可能な限りクリーンなタグを保持したいと思います。もっと「内部」的な方法がありますか?
はい、まともなやり方で、私はおそらく同様の問題を扱います。タグセット内の有効期限の切れたメンバーの存在は、パフォーマンス以外の方法では問題にならないため、デーモンの定期的に実行されるcron isteadを使用して、ポーリングを十分に最小限に制限します。 – Przemek