layering-cache-tool

多级缓存工具模块

License

License

GroupId

GroupId

com.github.xiaolyuh
ArtifactId

ArtifactId

layering-cache-tool
Last Version

Last Version

2.1.1
Release Date

Release Date

Type

Type

jar
Description

Description

layering-cache-tool
多级缓存工具模块

Download layering-cache-tool

How to add to project

<!-- https://jarcasting.com/artifacts/com.github.xiaolyuh/layering-cache-tool/ -->
<dependency>
    <groupId>com.github.xiaolyuh</groupId>
    <artifactId>layering-cache-tool</artifactId>
    <version>2.1.1</version>
</dependency>
// https://jarcasting.com/artifacts/com.github.xiaolyuh/layering-cache-tool/
implementation 'com.github.xiaolyuh:layering-cache-tool:2.1.1'
// https://jarcasting.com/artifacts/com.github.xiaolyuh/layering-cache-tool/
implementation ("com.github.xiaolyuh:layering-cache-tool:2.1.1")
'com.github.xiaolyuh:layering-cache-tool:jar:2.1.1'
<dependency org="com.github.xiaolyuh" name="layering-cache-tool" rev="2.1.1">
  <artifact name="layering-cache-tool" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.github.xiaolyuh', module='layering-cache-tool', version='2.1.1')
)
libraryDependencies += "com.github.xiaolyuh" % "layering-cache-tool" % "2.1.1"
[com.github.xiaolyuh/layering-cache-tool "2.1.1"]

Dependencies

compile (7)

Group / Artifact Type Version
com.github.xiaolyuh : layering-cache-core jar 2.1.1
org.slf4j : slf4j-api Optional jar 1.7.25
com.github.ben-manes.caffeine : caffeine jar 2.6.2
org.springframework : spring-core Optional jar 5.1.3.RELEASE
org.springframework.data : spring-data-redis Optional jar 2.1.3.RELEASE
com.alibaba : fastjson Optional jar 1.2.58
javax.servlet : javax.servlet-api jar 4.0.1

test (8)

Group / Artifact Type Version
org.springframework.boot : spring-boot-starter-test jar 2.1.1.RELEASE
org.slf4j : slf4j-log4j12 jar 1.7.25
io.lettuce : lettuce-core jar 5.1.3.RELEASE
redis.clients : jedis jar 2.9.0
com.esotericsoftware : kryo-shaded jar 3.0.3
io.protostuff : protostuff-core jar 1.6.0
io.protostuff : protostuff-runtime jar 1.6.0
com.fasterxml.jackson.core : jackson-databind jar 2.10.0.pr1

Project Modules

There are no modules declared in this project.

layering-cache

Maven Central License

简介

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

支持

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

优势

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

文档

中文文档

打开监控统计功能

打开监控统计功能

重要提示

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

更新日志

更新日志

实现原理

实现原理

作者信息

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

作者邮箱: [email protected]

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

捐赠

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

微信-支付宝

技术支持

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

微信

com.github.xiaolyuh

Versions

Version
2.1.1
2.1.0
2.0.9
2.0.8
2.0.7
2.0.6
2.0.5
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
1.1.9
1.1.8
1.1.7
1.1.6
1.1.5
1.1.4
1.1.3
1.1.2
1.1.0
1.0.9
1.0.8