服務器經常會用到redis作為緩存,有很多數據都是臨時set以下,可能用過之後很久都不會再用到了(比如暫存session)那麼就有幾個問題了
光阴似箭催人老,日月如移越少年。
redis預設把所有資料都永久儲存在記憶體中,當你需要持久化資料(儲存到磁碟)或自動刪除過期鍵,需要使用額外的指令或設定來完成; 如果你需要使用redis來完成你的業務需求(譬如cache),那麼你就必須遵循redis的設計規則;
至於你後面提到這個問題:即便我很有潔癖的每一條都加上了expire,你能保證多人開發中其他人也加上了expire?如果有人沒有呢,那數據就一直保存著
我是這樣想的:通常業務邏輯都會封裝成API接口,譬如登陸場景存session接口可能就是:void addLoginSession(string data, int timeout),然後別人在調用的時候其實壓根不管這裡面用的是redis還是memcache,所有的細節都必須只由API設計者消化;
順便說一下,redis如何清理資料庫中過期的鍵?它分為兩種:
可以用 expire 指令來設定過期時間。還有另外幾個指令也可以用來設定過期時間的,具體請查閱文件。
redis預設把所有資料都永久儲存在記憶體中,當你需要持久化資料(儲存到磁碟)或自動刪除過期鍵,需要使用額外的指令或設定來完成; 如果你需要使用redis來完成你的業務需求(譬如cache),那麼你就必須遵循redis的設計規則;
至於你後面提到這個問題:即便我很有潔癖的每一條都加上了expire,你能保證多人開發中其他人也加上了expire?如果有人沒有呢,那數據就一直保存著
我是這樣想的:通常業務邏輯都會封裝成API接口,譬如登陸場景存session接口可能就是:void addLoginSession(string data, int timeout),然後別人在調用的時候其實壓根不管這裡面用的是redis還是memcache,所有的細節都必須只由API設計者消化;
順便說一下,redis如何清理資料庫中過期的鍵?它分為兩種:
可以用 expire 指令來設定過期時間。還有另外幾個指令也可以用來設定過期時間的,具體請查閱文件。