redis的過期策略都有哪些
定期刪除
定期刪除:每隔一段時間,就抽取一部分設定了過期時間的key進行刪除,但是一般快取中會有非常多過期的key,如果一次性刪除全都的話,就會容易導致卡死,所以會配合惰性刪除。
惰性刪除:
惰性刪除是如果某一快取資料被查到的時候是過期了的,那麼直接刪除這個資料,但是通過定期刪除+惰性刪除之後的資料還是會有很多的資料沒有被刪除,所以會有記憶體淘汰機制。
記憶體淘汰機制:
1)noeviction:當記憶體不足以容納新寫入資料時,新寫入操作會報錯,這個一般沒人用
2)allkeys-lru:當記憶體不足以容納新寫入資料時,在鍵空間中,移除最近最少使用的key(這個是最常用的)
3)allkeys-random:當記憶體不足以容納新寫入資料時,在鍵空間中,隨機移除某個key,這個一般沒人用,為啥要隨機,肯定是把最近最少使用的key給乾掉啊
4)volatile-lru:當記憶體不足以容納新寫入資料時,在設定了過期時間的鍵空間中,移除最近最少使用的key(這個一般不太合適)
5)volatile-random:當記憶體不足以容納新寫入資料時,在設定了過期時間的鍵空間中,隨機移除某個key
6)volatile-ttl:當記憶體不足以容納新寫入資料時,在設定了過期時間的鍵空間中,有更早過期時間的key優先移除
redis中LRU演算法的實現
lru least recently used 即最近最少使用 它應該支援以下操作 獲取資料 get 和 寫入資料 put 獲取資料 get key 如果金鑰 key 存在於快取中,則獲取金鑰的值 總是正數 否則返回 1。寫入資料 put key,value 如果金鑰不存在,則寫入其資料值。當快取容...
LRU在Redis中的實現
redis使用的是近似lru演算法,它跟常規的lru演算法還不太一樣。近似lru演算法通過隨機取樣法淘汰資料,每次隨機出5 預設 個key,從裡面淘汰掉最近最少使用的key。redis給每個key增加了乙個額外增加了乙個24bit的字段,用來儲存該key最後一次被訪問的時間。取樣數量 maxmemo...
redis相關問題彙總
本文問題不分先後順序,具體問題請自己詳細定位。1 redis快取穿透 場景 查詢根本不存在的資料,使得請求直達儲存層,導致其負載過大,甚至宕機。解決方案 1 快取空物件 儲存層未查到相應的資料後,仍然將空值存入到快取層。再次訪問該資料時,快取層會直接返回空值。2 布隆過濾器 將所有存在的key提前存...