「Go工具箱」一个基于双向链表实现的LRU缓存工具
2023-02-26 09:48:42 时间
大家好,我是渔夫子。本号新推出「go工具箱」系列,意在给大家分享使用go语言编写的、实用的、好玩的工具。
今天给大家推荐的工具是一个实现了固定缓存大小、线程安全的缓存组件,该缓存实现了最近最少使用的策略:golang-lru。
实现原理分析:该包是基于内置包 list.List实现的,list.List的底层是一个双向链接。并提供了一个列表的大小。当对该列表中的某个元素进行访问或添加操作时,就将该元素移动到链表的最前面。当新添加元素后,元素数量超过了列表的大小,则将最后一个元素移除。
该包使用起来也很简单,首先给缓存设置一个容量大小,然后就可以对元素进行添加和删除了,如果缓存中超过了128个元素,在操作的同时就会把最近没有使用的元素给删除掉。如下:
cache, _ := lru.New(128)
// 往缓存中添加一个key-value
cache.Add("age", 19)
// 获取缓存中的key的value
cache.Get("age")
// 移除缓存中的key
cache.Remove("age")
//获取缓存中元素的个数
cache.Len()
更多项目详情请查看如下链接。
开源项目地址:https://github.com/hashicorp/golang-lru
开源项目作者:hashicorp
---特别推荐---
特别推荐:一个专注go项目实战、项目中踩坑经验及避坑指南、各种好玩的go工具的公众号,「Go学堂」,专注实用性,非常值得大家关注。点击下方公众号卡片,直接关注。关注送《100个go常见的错误》pdf文档。
相关文章
- Jgit的使用笔记
- 利用Github Action实现Tornadofx/JavaFx打包
- 叹息!GitHub Trending 即将成为历史!
- 微软软了?开源社区讨论炸锅,GitHub CEO 亲自来答
- GitHub Trending 列表频现重复项,前后端都没去重?
- Photoshop Elements 2021版本软件安装教程(mac+windows全版本都有)
- (ps全版本)Photoshop 2020的安装与破解教程(mac+windows全版本都有)
- (ps全版本)Photoshop cc2018的安装与破解教程(mac+windows全版本,包括2023
- 环境搭建:Oracle GoldenGate 大数据迁移到 Redshift/Flat file/Flume/Kafka测试流程
- 每个开发人员都要掌握的:最小 Linux 基础课
- 来撸羊毛了!Windows 环境下 Hexo 博客搭建,并部署到 GitHub Pages
- 超实用!手把手入门 MongoDB:这些坑点请一定远离
- 【GitHub日报】22-10-09 zustand、neovim、webtorrent、express 等4款App今日上新
- 【GitHub日报】22-10-10 brew、minio、vite、seaweedfs、dbeaver 等8款App今日上新
- 【GitHub日报】22-10-11 cobra、grafana、vue、ToolJet、redwood 等13款App今日上新
- Photoshop 2018 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2017 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2020 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2023 资源免费下载(mac+windows全版本都有,包括最新的2023)
- 最新版本Photoshop CC2018软件安装教程(mac+windows全版本都有,包括2023