一、什么是LRU
LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。
二、代码解析
iru/iru.go
type Cache struct {
//缓存中最多存储的条数,当MaxEntries为0时没有限制
MaxEntries int
//销毁前回调
OnEvicted func(key Key, value interface{
})
//链表
ll *list.List
//key为任意类型,值为指向链表结点的指针
cache map[interface{
}]*list.Element
}
type Key interface{
}
//访问入口结构
type entry struct {
key Key
value interface{
}
}
//初始化一个cache
func New(maxEntries int) *Cache {
return &Cache{
MaxEntries: maxEntries,
ll: list.New(), //list.New() 初始化链表
cache: make(map[interface{
}]*list.Element),
}
}
//向cache中添加一个value
func