聊聊快取替換

2021-09-02 18:41:55 字數 648 閱讀 9828

最後兩個稍微有點繞,看似是倆不一樣的思路,但是仔細想想,乙個是基於時間線,另乙個基於使用頻次。都有乙個共同的特性,抽象出來,這倆就是計算規則上的不同罷了,實際上大體也還屬於同一種模式。

下面簡單用**走一遍,加深下印象。

#coding: utf8

__author__ = "郭 璞"

__email__ = "[email protected]"

# random cache algorithm

import random

class cacher(object):

def __init__(self, size):

self.size = size

self.container = [none for item in range(size)]

# 統計

self.hitcnt = 0

self.misscnt = 0

def _getrandkey(self, key):

"""通過隨機演算法找到對應的index"""

return sum([ord(item) for item in str(key)]) % self.size

def cache(self, key

聊聊快取淘汰演算法 LRU 實現原理

我們常用快取提公升資料查詢速度,由於快取容量有限,當快取容量到達上限,就需要刪除部分資料挪出空間,這樣新資料才可以新增進來。快取資料不能隨機刪除,一般情況下我們需要根據某種演算法刪除快取資料。常用淘汰演算法有 lru,lfu,fifo,這篇文章我們聊聊 lru 演算法。lru是 least rece...

LIRS快取替換演算法

lirs快取替換演算法 lirs low inter reference recency set 是乙個頁替換演算法,相比於lru least recently used 和很多其他的替換演算法,lirs具有較高的效能。這是通過使用兩次訪問同一頁之間的距離 本距離指中間被訪問了多少非重複塊 作為一種...

聊聊資料庫和快取同步機制

快取同步的常用模式 快取同步的模式,可以按照快取的用途 主要用於讀或者寫 分為兩類 讀快取的同步和寫快取的同步。讀快取的同步 快取預載入模式 提前將資料從資料庫載入到快取,如果資料庫有寫更新,同步更新快取。在秒殺情況下,我們對商品資料就按照這種模式進行處理。快取直讀模式 應用先檢視快取中是否有該資料...