新聞中心
假設(shè)某工程師手動/自動給 Redis 數(shù)據(jù)庫的 KEY 設(shè)置了過期時間,但當(dāng)組的最大過期時間到達之后,key 還沒有失效,此時工程師可能要排查這個 key 為什么沒有失效的原因。

需要找到設(shè)置過期時間的代碼,看這個 key 是如何設(shè)置過期時間的,可以使用這條命令來查詢這個 key 的過期時間:
ttl key_name
如果返回 -1,則說明這個 key 沒有設(shè)置過期時間,排查需要關(guān)注這兩個方面:
* 代碼初始化問題:檢查代碼是否正確設(shè)置了過期時間,并且即使是多個客戶端都能正確設(shè)置過期時間;
* 過期檢測錯誤:如果從多個客戶端設(shè)置了過期時間,那么可能是 Redis 無法正確的檢測到這個 key 的過期時間,這種情況下需要重新開啟 Redis 服務(wù),并且執(zhí)行 redis-check-aof 和 redis-check-rdb 這兩個命令來檢查內(nèi)部是否存在損壞的數(shù)據(jù),以保護數(shù)據(jù)的完整性。
此外,如果在 Redis 內(nèi)部存在過一些內(nèi)存溢出的問題,那么 Redis 會被強制退出并且清空緩存,導(dǎo)致 key 失效。此時可以查看 Redis 的 log 日志來查找原因,如果發(fā)現(xiàn)了內(nèi)存泄漏的問題,就可以針對特定的代碼做優(yōu)化來減少內(nèi)存的消耗,從而避免該問題的再次發(fā)生。
為了確保 key 一定能夠在期望的時間失效,可以使用一個定時任務(wù),比如每隔一定時間執(zhí)行一次 redis-check-aof 和 redis-check-rdb 這兩個命令,確保 Redis 能夠準確的檢測 key 的失效時間,從而保證 key 的正確性。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
網(wǎng)頁名稱:追查Redis過期Key未失效的原因(redis過期未失效問題)
新聞來源:http://m.fisionsoft.com.cn/article/dhspchs.html


咨詢
建站咨詢
