在給Key設定過期時間時, 會創建一個定時器去定時洗掉。
那為什么還要定期洗掉和惰性洗掉, 做無用功?
uj5u.com熱心網友回復:
感覺上面的定義就很清楚了uj5u.com熱心網友回復:
如果 兩個定時 之間的時間,key 過期,沒有其他兩種 輔助,不是就會取到過期的值了?uj5u.com熱心網友回復:
個人認為其他兩個洗掉方式在大資料量情況是使用挺多的。如果redis里一個比較大的key,在設定的過期時間要進行洗掉了,但由于資料量很大,可能會導致系統卡頓等。
而如果采用定期(設定在空閑時間,比如半夜訪問量很小的情況下),或者惰性(通過其他執行緒判斷訪問量等)洗掉,就能很大程度避免卡頓等
uj5u.com熱心網友回復:
定期洗掉一般更新Redis里面的資訊防止資訊過時效uj5u.com熱心網友回復:
這三個策略都有各自的優缺點, 要看你實際應用情況了。。。定時洗掉雖然占用少量記憶體,但是會占用大量cpu資源去處理過期資料。
惰性洗掉因為不及時洗掉expire的資料,所以記憶體使用率會比較高,,
定時洗掉就比較折中, 而且掃描時間和掃描個數都可以自定義。
uj5u.com熱心網友回復:
哦, 另外記得惰性洗掉在replication環境在slave那一段有點問題,如果master不被訪問slave不會被洗掉的問題。不知道最新版本已經修復好沒有?轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/31109.html
標籤:Java相關
上一篇:mac下weblogic安裝NodeManager無法啟動,native library could not be loaded to write proces
下一篇:jsp文本框只能輸入數字
