首页 > 编程知识 正文

fifo页面淘汰算法时的缺页率,缓存淘汰策略

时间:2023-05-04 09:37:40 阅读:127860 作者:4214

LRU概述LRU缓存销毁算法是一种常见策略。 LRU的全名是“最近使用”。 也就是说,我认为最近使用的数据应该“有用”,长时间不使用的数据应该是徒劳的。 内存已满后,优先删除长期未使用的数据。

过程思维我的想法是这样的。 保持数组,越接近数组末尾的节点访问得越快。 新数据被访问时,我们将遍历数据

1 .如果以前在数组中缓存过此数据,则遍历此数据以返回成功,从原始位置删除它,然后将其插入数组的开头。

2 .如果此数据未缓存在数组中,可以分为两种情况:

如果此时缓存未满,请将此数据直接插入数组的开头。 如果此时缓存已满,请删除数组中的最后一个数据,并将新数据节点插入数组的开头。 //实现数组实现LRU总体上效率不高。 这里主要是为了知道这个淘汰战略是怎么回事

packagemainimport ' fmt ' typecachestruct { arr [ ] intmaxlenint//缓存的最大元素数}func(c*cache ) get (value int ) varflagbagbe 数据为第一个if i==0{return}else {c.arr[i],c.arr[0]=c.arr[0],flag{//当前元素不在缓存中。 在不丢弃ifc.length(c.maxlen )//的情况下,添加到头部即可移除c.add (value ) ) else )//最后一个元素。 然后将新元素添加到头部c.arr=c.arr[:c.length(-1 ) c.add ) value ] }//头部中元素func(c*cache ) add (value int ) ) if c.arr [ 0: ] . ] }//当前缓存中有哪些元素func (c * cache (show data ) ) ) int ) returnc.arr (func ) c * cache (append ) value ) ) func ) c*cache ) Length ) ) int { return len (c.arr ) } funcnewcache (maxint ) cache ) ) c }returnRES} func main ((cached dome :=newcache (3) cachedome.append )1) cachedome.append )2) cachedome.apppend ) ) cache ome.showdata ) ) cachedome.get )4) fmt.println ) cachedome.showdata

内存用完后,Redis会做什么?

Redis中内存丢弃算法的实现

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。