换出策略
前几天看到别人整理的关于缓存替换的讨论,觉得很是不错。大致有这么几种思路:
- 随机换出
- FIFO(First In First Out)
- LRU (Latest Recently Used) 最近最少使用的被换出
- LFU (Latest Frequency Used) 最不频繁使用的被换出
最后两个稍微有点绕,看似是俩不一样的思路,但是仔细想想,一个是基于时间线,另一个基于使用频次。都有一个共同的特性,抽象出来,这俩就是计算规则上的不同罢了,实际上大体也还属于同一种模式。
下面简单用代码走一遍,加深下印象。
随机换出
#coding: utf8
__author__ = "郭 璞"
__email__ = "marksinoberg@gmail.com"
# 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