最後兩個稍微有點繞,看似是倆不一樣的思路,但是仔細想想,乙個是基於時間線,另乙個基於使用頻次。都有乙個共同的特性,抽象出來,這倆就是計算規則上的不同罷了,實際上大體也還屬於同一種模式。
下面簡單用**走一遍,加深下印象。
#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具有較高的效能。這是通過使用兩次訪問同一頁之間的距離 本距離指中間被訪問了多少非重複塊 作為一種...
聊聊資料庫和快取同步機制
快取同步的常用模式 快取同步的模式,可以按照快取的用途 主要用於讀或者寫 分為兩類 讀快取的同步和寫快取的同步。讀快取的同步 快取預載入模式 提前將資料從資料庫載入到快取,如果資料庫有寫更新,同步更新快取。在秒殺情況下,我們對商品資料就按照這種模式進行處理。快取直讀模式 應用先檢視快取中是否有該資料...