golang有用的库及工具 之 缓存淘汰算法--LRU算法
来源:互联网 发布:零式战斗机知乎 编辑:程序博客网 时间:2024/05/25 01:35
1. LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。
2. 实现
最常见的实现是使用一个链表保存缓存数据,详细算法实现如下:
1. 新数据插入到链表头部;
2. 每当缓存命中(即缓存数据被访问),则将数据移到链表头部;
3. 当链表满的时候,将链表尾部的数据丢弃。
3. 分析
【命中率】
当存在热点数据时,LRU的效率很好,但偶发性的、周期性的批量操作会导致LRU命中率急剧下降,缓存污染情况比较严重。
【复杂度】
实现简单。
【代价】
命中时需要遍历链表,找到命中的数据块索引,然后需要将数据移到头部。
4. LRU在golang中的使用。
库:github.com/karlseguin/ccache
func main() { var cache = ccache.New(ccache.Configure().MaxSize(1000).ItemsToPrune(100)) cache.Set("aaa", 1234, time.Second) time.Sleep(time.Second*2) i := cache.Get("aaa") fmt.Println(i.Value(), i.Expires())}
ccache 库,在golang中应用中对于内存存储使用比较频繁次数比较多的,可以考虑用LRU。
阅读全文
0 0
- golang有用的库及工具 之 缓存淘汰算法--LRU算法
- 缓存淘汰算法之LRU
- 缓存淘汰算法之LRU
- 缓存淘汰算法之LRU
- 缓存淘汰算法之LRU
- 缓存淘汰算法之LRU
- LRU缓存淘汰算法
- 缓存淘汰算法系列之1 --- LRU
- 缓存淘汰算法--LRU算法
- 缓存淘汰算法--LRU算法
- 缓存淘汰算法--LRU算法
- 缓存淘汰算法--LRU算法
- 缓存淘汰算法--LRU算法
- 缓存淘汰算法--LRU算法
- 缓存淘汰算法--LRU算法
- 缓存淘汰算法--LRU算法
- 缓存淘汰算法--LRU算法
- 缓存淘汰算法--LRU算法
- Hibernate学习之配置文件hibernate.cfg.xml
- Python uniform() 函数
- 上白泽慧音(浅谈Tarjan——(2))
- String,StringBuffer常用方法
- SurfaceTexture学习笔记
- golang有用的库及工具 之 缓存淘汰算法--LRU算法
- scala正则表达式获取url的host
- Swift开发:Swift 修改UISegmentedControl字体大小,颜色
- 英创主板JAVA应用开发简介
- 如何快速全面建立自己的大数据知识体系?
- C/C++头文件解析
- 数据结构预习线性表
- Qos之丢包重传NACK
- CNCBK精准扶贫走进广东省暨全国代理商大会