当前位置: 首页 > news >正文

业务实现中的本地缓存(GO)

实际业务实现中常常会使用到本地缓存,用以减少对实际存储的访问,我们会针对不同的使用场景设计不同的缓存模式,但是基本的实现方式都是一个巨大的Map/Table(不同语言)。下面用go来说,总体的实现都是通过一个,根据不同的需求,LFU,LRU再设计map里面具体的entry的struct,保存需要的计数用来做淘汰,下面从不同使用角度来说明一下

普通的保存配置项的本地缓存

实际使用中,某些中台服务/服务发现需要拉取比较多的etcd配置(也有可能在其他存储),但是整体上还是有限的。此时不需要考虑key的淘汰,存在本地不会占用过多内存。目标是反而是为了避免对etcd或存储的长期访问以及保证配置有一个实时更新的机制。
有两种方法

  • 定期去pull
    • 本地需要维护配置的全量,需要预先知道所有配置, 不灵活
    • 所有配置同时拉取对存储是个负担,可能需要随机打散
  • 读取完了以后缓存下来并设定一个过期时间
    • 过期以后下次访问就重新拉取
    • 单次拉取失败取已经过期的缓存值返回

相对来说第二种方法比较好,这种实现比较简单

import ( "sync" "time" ) var localCache *Cache = &Cache{} type Cache struct { m sync.Map } type Entry struct { Expire time.Time Value interface{} } func (c *Cache) Set(key string, value interface{}, expiration time.Duration) { entry := &Entry{ Expire: time.Now().Add(expiration), Value: value, } c.m.Store(key, entry) } func (c *Cache) Get(
http://www.jsqmd.com/news/1281140/

相关文章:

  • 滑稽树下你和我-树形dp-吉首大学2019年程序设计竞赛
  • three.js 编辑器的 Roadmap 与规划
  • 计算机毕业设计之基于Springboot的高校实验室设备故障报修系统设计与实现
  • CCF-CSP 201809-1 卖菜
  • 实测揭秘!2026 年适配多学科的 AI 论文写作工具究竟有哪些
  • QQ空间说说备份:一键导出你的青春记忆
  • 计算机毕业设计之基于SpringBoot的高校晒衣服交流系统的设计与实现
  • GetQzonehistory:如何轻松备份你的QQ空间历史说说完整指南
  • excel 宏 把一个工作表按照某几个列拆分为多个工作表
  • B站视频下载终极指南:BilibiliDown跨平台免费下载器完全教程
  • 3步实现Mac百度网盘极速下载:告别龟速下载的终极方案
  • 终极指南:如何用免费工具VR-Reversal在普通设备上播放VR视频
  • 免费备份QQ空间历史说说:GetQzonehistory完整指南
  • NBM7100A与PIC18LF4553的低功耗电源管理方案
  • 2026年沈阳电线电缆回收企业盘点 圣兴再生资源回收服务及行业要点梳理 - 浩了个浩
  • 研究生论文AIGC检测挑战与千笔降AI率工具解析
  • C#转C++实战:内存管理、RAII与面向对象编程核心差异解析
  • 免费开源的Modbus调试工具:5分钟快速上手指南
  • 计算机专业英语学习网站开发全栈指南
  • 5步实现Steam游戏自动破解的完整解决方案:专业级自动化DRM移除工具终极指南
  • three.js 编辑器提供哪些商业服务
  • GCC编译器查看C语言编译过程
  • 物联网设备初级电池寿命优化方案与低功耗设计实践
  • UnityEngine.UI程序集丢失:系统性排查与解决方案全解析
  • 网上那么多订票攻略,到底怎么买特价机票才真实有效? - 工具软件使用方法推荐
  • MATLAB实现电-热综合能源系统两阶段优化调度
  • 如何彻底掌控Windows窗口:Window Resizer终极桌面管理指南
  • Maven 常用的jar包依赖
  • AI产品的客户留存率提升实践:从数据预警到主动干预的运营体系
  • 3步快速部署IPBan:免费高效的服务器安全防护终极方案