原文地址:Golang实现LRU算法~
LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的缓存淘汰算法,选择最近最久未使用的数据予以淘汰,该算法赋予每个数据一个访问字段,用来记录一个元素自上次被访问以来所经历的时间 t,当须淘汰一个数据时,选择现有数据中其 t 值最大的,即最近最少使用的页面予以淘汰。
Go可用链表数据结构来省去设置访问时间t字段,可将经常访问的数据插入链表头,而链表尾部的数据自然就成为最久未访问的数据。
代码实现如下:
package mainimport ("container/list""errors""sync")type Lru struct {max intl *list.ListCall func(key interface{}, value interface{})cache map[interface{}]*list.Elementmu *sync.Mutex}type Node struct {Key

最低0.47元/天 解锁文章
1410

被折叠的 条评论
为什么被折叠?



