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作業,該腳本會定期從集合中刪除過期密鑰 - 將所有標籤名稱添加到另一個集合,然後遍歷所有標籤,然後遍歷所有標籤標記並檢查相應的密鑰是否存在 - 如果不存在,則調用SREM
。
我不認爲這將是一種有效的方式,我可能希望保持標籤儘可能乾淨,因爲這些集合的大小可能會影響通過多個標籤進行搜索的性能(SINTER
)。有更多的「內部」方式嗎?
是的,這是一個體面的方式,我可能會用類似的方式處理這個問題。既然標籤集合中過期成員的存在並不是以其他方式表現的問題,那麼我很可能會使用定期運行的cron而不是deamon--將投票數限制在足夠的最小值。 – Przemek