三種常見的快取過期策略LFU,FIFO,LRU說明

2021-09-26 20:37:39 字數 839 閱讀 8855

**:

快取實現的過程以及淘汰舊頁面的機制不同,所以會有不同快取排程方法,就常見的就是fifo,lru,lfu快取過期策略。

1.fifo(first in first out):先見先出,淘汰最先近來的頁面,新進來的頁面最遲被淘汰,完全符合佇列。

2.lru(least recently used):最近最少使用,淘汰最近不使用的頁面

3.lfu(least frequently used): 最近使用次數最少, 淘汰使用次數最少的頁面

其實現演算法原理按照「先進先出(first in,first out)」的原理淘汰資料。

實現步驟原理如下:

1. 新訪問的資料插入fifo佇列尾部,資料在fifo佇列中順序移動;

2. 淘汰fifo佇列頭部的資料;

其實現演算法的原理根據資料的歷史訪問記錄來進行資料淘汰。

核心思想「如果資料最近被訪問過,那麼將來被訪問的機率也更高」。

實現步驟原理如下:

1. 新資料插入到鍊錶頭部;

2. 每當快取命中(即快取資料被訪問),則將資料移到鍊錶頭部;

3. 當鍊表滿的時候,將鍊錶尾部的資料丟棄。

其實現演算法的原理根據資料的歷史訪問頻率來進行資料淘汰。

其核心思想「如果資料過去被訪問多次,那麼將來被訪問的頻率也更高」。

lfu的每個資料塊都有乙個引用計數,所有資料塊按照引用計數排序,具有相同引用計數的資料塊則按照時間排序。

其具體實現步驟原理如下:

1. 新加入資料插入到佇列尾部(因為引用計數為1);

2. 佇列中的資料被訪問後,引用計數增加,佇列重新排序;

3. 當需要淘汰資料時,將已經排序的列表最後的資料塊刪除。

reids過期鍵三種刪除策略

redis設計與實現 第二版 我們知道資料庫的過期時間都儲存在過期字典中,又知道了如何根據過期時間去判斷乙個鍵是否過期,現在的問題是 如果乙個鍵過期了,那麼它什麼時候會被刪除呢?這個問題有三種可能的答案,它們分別代表三種不同的 刪除策略 惰性刪除 放任鍵過期不管,但是每次從鍵空間中獲取鍵時,都檢查取...

三種常見DDOS攻擊應對策略

ddos防禦需要根據不同的攻擊型別和不同的攻擊方式指定對應的策略才能達到最有效的防禦。常見的ddos包括 flood cc和反射等。1 flood攻擊 flood類的攻擊最常見並簡單有效,黑客通過控制大量的肉雞同時向伺服器發起請求,進而達到阻塞服務端處理入口或網絡卡佇列。針對消耗性flood攻擊,如...

Redis快取鍵的過期策略

命令名功能 expire 將鍵的生存時間設定為ttl秒 pexpire 將鍵的生存時間設定為ttl毫秒 expireat 將鍵的生存時間設定為timestamp指定的秒數時間戳 pexpireat 將鍵的生存時間設定為timestamp指定的毫秒數時間戳 前三個命令最終都會轉換成pexpireat命...