[有意思的代码] layering-cache: 为监控而生的分布式多级缓存框架

[](#layering-cache)layering-cache

Maven Central License

[](#%E7%AE%80%E4%BB%8B)简介

layering-cache是一个支持分布式环境的多级缓存框架,使用方式和spring-cache类似。一级缓存使用Caffeine作为本地缓存,二级缓存使用redis作为集中式缓存。一级缓存和二级缓存的数据一致性是通过推和拉两种模式相结合的方式来实现的。推主要是基于redis的pub/sub机制,拉主要是基于消息队列和记录消费消息的偏移量来实现的。

[](#%E6%94%AF%E6%8C%81)支持

  • 支持缓存命中率的监控统计,统计数据上报支持自定义扩展
  • 内置dashboard,支持对缓存的管理和缓存命中率的查看
  • 支持缓存过期时间在注解上直接配置
  • 支持缓存的自动刷新(当缓存命中并发现二级缓存将要过期时,会开启一个异步线程刷新缓存)
  • 缓存Key支持SpEL表达式
  • Redis支持Kryo、FastJson、Jackson、Jdk和Protostuff序列化,默认使用Protostuff序列化,并支持自定义的序列化
  • 支持同一个缓存名称设置不同的过期时间
  • 支持禁用一级缓存,只使用二级缓存
  • 通过允许存空值来解决缓存穿透问题

[](#%E4%BC%98%E5%8A%BF)优势

  1. 提供缓存命中率的监控统计,统计数据上报支持自定义扩展
  2. 支持本地缓存和集中式两级缓存
  3. 接入成本和使用成本都非常低
  4. 支持Spring、Spring boot
  5. 内置dashboard使得缓存具备可运维性

[](#%E6%96%87%E6%A1%A3)文档

中文文档

[](#redis%E5%BA%8F%E5%88%97%E5%8C%96%E6%96%B9%E5%BC%8F%E5%AF%B9%E6%AF%94)Redis序列化方式对比

Redis序列化同一个User对象对比

size

serialize(get 10W次)

deserialize(set 10W次)

serialize(cup)

deserialize(cup)

Kryo

273 b

82919 ms

90917 ms

8%

12%

FastJson

329 b

15405 ms

18886 ms

12%

13%

Jackson

473 b

16066 ms

16140 ms

15%

14%

Jdk

1036 b

17344 ms

24917 ms

14%

13%

Protostuff

282 b

14295 ms

14355 ms

15%

13%

[](#%E6%89%93%E5%BC%80%E7%9B%91%E6%8E%A7%E7%BB%9F%E8%AE%A1%E5%8A%9F%E8%83%BD)打开监控统计功能

打开监控统计功能

[](#%E9%87%8D%E8%A6%81%E6%8F%90%E7%A4%BA)重要提示

  • layering-cache支持同一个缓存名称设置不同的过期时间,但是一定要保证key唯一,否则会出现缓存过期时间错乱的情况
  • 删除缓存的时候会将同一个缓存名称的不同的过期时间的缓存都删掉
  • 在集成layering-cache之前还需要添加以下的依赖,主要是为了减少jar包冲突(依赖jar列表)。
  • redis的key序列化方式必须StringRedisSerializer

[](#%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97)更新日志

更新日志

[](#%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86)实现原理

实现原理

[](#%E4%BD%9C%E8%80%85%E4%BF%A1%E6%81%AF)作者信息

作者博客:https://xiaolyuh.blog.csdn.net/

作者邮箱: xiaolyuh@163.com

github 地址:https://github.com/xiaolyuh/layering-cache

[](#%E6%8D%90%E8%B5%A0)捐赠

项目的发展离不开你的支持,请作者喝杯咖啡吧!

微信-支付宝

[](#%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81)技术支持

添加微信记得备注 layering-cache,捐赠用户可享有需求优先解决、协助部署、二次开发帮助。

微信


原网址: 访问
创建于: 2021-03-03 13:26:51
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论