groupcache源码解析(IRU)

本文主要解析了golang的groupcache库中基于IRU(最近未使用)策略的部分。首先介绍了LRU算法的基本思想,即淘汰最近最久未使用的页面。接着详细解读了iru/iru.go的代码实现。
摘要由CSDN通过智能技术生成

一、什么是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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值