layering-cache是一个支持分布式环境的多级缓存框架,使用方式和spring-cache类似。一级缓存使用Caffeine作为本地缓存,二级缓存使用redis作为集中式缓存。一级缓存和二级缓存的数据一致性是通过推和拉两种模式相结合的方式来实现的。推主要是基于redis的pub/sub机制,拉主要是基于消息队列和记录消费消息的偏移量来实现的。
支持
- 支持缓存命中率的监控统计,统计数据上报支持自定义扩展
- 内置dashboard,支持对缓存的管理和缓存命中率的查看
- 支持缓存过期时间在注解上直接配置
- 支持缓存的自动刷新(当缓存命中并发现二级缓存将要过期时,会开启一个异步线程刷新缓存)
- 缓存Key支持SpEL表达式
- Redis支持Kryo、FastJson、Jackson、Jdk和Protostuff序列化,默认使用Protostuff序列化,并支持自定义的序列化
- 支持同一个缓存名称设置不同的过期时间
- 支持禁用一级缓存,只使用二级缓存
- 通过允许存空值来解决缓存穿透问题
优势
- 提供缓存命中率的监控统计,统计数据上报支持自定义扩展
- 支持本地缓存和集中式两级缓存
- 接入成本和使用成本都非常低
- 支持Spring、Spring boot
- 内置dashboard使得缓存具备可运维性
评论