我正在使用redis作爲緩存,並且想要在redis中過期未使用的數據。目前,對象的設置到期會在到期時間過去後刪除對象。但是,如果在對象到期之前至少讀取一次,我想將對象保留在redis中。Redis作爲緩存 - 重置過期
我看到的一種方式是爲每個對象存儲一個單獨的expiry_key,並將expiry_key設置爲expiry_key而不是原始對象。在expiry_key上訂閱del通知,並在收到del通知時,在到期間隔期間檢查對象是否至少讀取一次(通過單獨維護的訪問日誌)。如果沒有讀取對象,則對原始對象執行del命令。如果讀取,則使用到期時間間隔重新創建expiry_key。
該實施需要額外的系統來管理過期,並希望在本地使用redis來完成。
有沒有更好的解決方案來解決這個問題?
爲每次讀取重置對象的過期將增加寫入redis的次數,因此這不是一個選擇。
請注意,redis緩存刷新是通過更改通知系統異步管理的。
嗨,Agis,感謝您的答覆。我從Slave實例讀取並從不同組件寫入Master實例。所以,我可能無法利用交易或管道。我們可以異步寫入master,但是這會增加寫入redis的次數。 – vinoths
@vinoths你確定這些額外的'EXPIRE'會成爲一個問題嗎?正如我所說的那樣,他們應該對Redis毫無問題。 – Agis