推荐一下自己的Go分布式缓存项目

seaguest · · 1109 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

最近整理了一下自己的分布式缓存方案,是cache-aside模式的二级缓存(memory+redis)实现,目前已经在线上投入使用,经过百万日活的验证。 内存部分是采用的是 sync.Map, 读取缓存的时候先从内存读,如果未读到则去读 redis,如果 redis 未读到,则根据定义的加载函数加载到 redis 和内存。 缓存有 lazy 模式,为了避免缓存被击穿,可以设置 lazy 模式,缓存数据存活的时间更久,但是每次读取的时候依然会判断数据是否是最新的,不是最新的话会异步加载更新。 通过 redis 的 Publish/Subscribe 功能,实现缓存的分布式更新,目前仅实现删除同步。 因为是很轻量级的,所以性能理论上会很不错,测试1000个并发毫无压力,有兴趣的同学可以验证一下。理论上性能的瓶颈在于数据库的查询,如果数据库配置够好,而redis单机10万QPS应该没什么问题,那么应该可以达到比较高的并发。 项目地址 https://github.com/seaguest/cache 欢迎大家批评指正!

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1109 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传