# Jetcache
**Repository Path**: naclnezn/jetcache
## Basic Information
- **Project Name**: Jetcache
- **Description**: Jetcache
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-08-12
- **Last Updated**: 2024-08-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# JetCache
# 一、JetCache
JetCache是阿里推出的一套替代`springCache`的缓存方案。
JetCache是对SpringCache进行了封装,在原有基础上实现了多级缓存、缓存统计、自动刷新、异步调用、数据报表等功能。
JetCache设定了本地缓存与远程缓存的多级缓存方案
- 本地缓存
- LinkedHashMap
- Caffeine
- 远程缓存
- Redis
- Tair
本地缓存和远程缓存可以任意组合
# 二、注解
## 2.1 @EnableMethodCache
表示支持方法注解缓存,相当于允许JetCache自动配置
| 属性 | 默认值 | 说明 |
|------------------|--------|-------------------------------------------------------|
| basePackages | 未定义 | 自动配置扫描的包,来进行Cache注解的扫描 |
| mode | proxy | 代理模式 支持两种 proxy代理 aspect 切面 |
| proxyTargetClass | false | 是否使用cglib子类进行代理,这会影响spring 管理的所有的bean 只会在mode为proxy生效 |
## 2.2 @Cached
添加缓存
| 属性 | 默认值 | 说明 |
|----------------|-------------------|--------------------------------------------------|
| area | default | 缓存分类,相当于命名空间 |
| name | 未定义 | 指定缓存实例的名字 |
| enabled | true | 是否缓存 |
| timeUnit | TimeUnit.SECONDS | 过期时间单位,默认为秒 |
| expire | 未定义 | 过期时间 |
| localExpire | 本地缓存 | 当为多级缓存时 该时间表示本地缓存过期时间 |
| cacheType | CacheType.REMOTE | 缓存类型 remote 远程缓存 local 本地缓存 both 多级缓存 |
| localLimit | 未定义 | 本地缓存限制数量 当cacheType为local,both时生效,若不配置 会以全局的配置生效 |
| serialPolicy | 未定义 | 指定value的序列化方式 使用方式bean:beanName 在spring 容器中管理的名称 |
| keyConvertor | 未定义 | 指定key的序列化方式 |
| key | 未定义 | 指定缓存对应的key 支持spel表达式 |
| cacheNullValue | false | 是否缓存空值 |
| condition | 未定义 | 使用SpEL指定条件,如果表达式返回true的时候才去缓存中查询 |
| postCondition | 未定义 | 使用SpEL指定条件,如果表达式返回true的时候才更新缓存,该评估在方法执行后进行 |
# 2.3 @CacheUpdate
更新缓存
| 属性 | 默认值 | 说明 |
|-----------|---------|---------------------------------------------------------------------------------------------------------------|
| area | default | 缓存分类,相当于命名空间 |
| name | 未定义 | 指定缓存实例的名字 |
| key | 未定义 | 指定缓存对应的key 支持spel表达式 |
| value | 未定义 | 缓存的值 支持spel表达式 |
| multi | false | 如果根据SpEL指定key和value都是集合并且元素的个数相同,
则是否更新缓存实例中的对应的每个元素。如果设置为true,但是key不是集合或者value不是集合或者它们的元素的个数不相同,也不会更新缓存。 |
| condition | 未定义 | 使用SpEL指定条件,如果表达式返回true的时候才更新缓存 |
# 2.4 @CacheInvalidate
失效缓存
| 属性 | 默认值 | 说明 |
|-----------|---------|---------------------------------------------------------------------------------------------------------------|
| area | default | 缓存分类,相当于命名空间 |
| name | 未定义 | 指定缓存实例的名字 |
| key | 未定义 | 指定缓存对应的key 支持spel表达式 |
| value | 未定义 | 缓存的值 支持spel表达式 |
| multi | false | 如果根据SpEL指定key和value都是集合并且元素的个数相同,
则是否失效缓存实例中的对应的每个元素。如果设置为true,但是key不是集合或者value不是集合或者它们的元素的个数不相同,也不会失效缓存。 |
| condition | 未定义 | 使用SpEL指定条件,如果表达式返回true的时候才失效缓存 |
# 2.5 @CacheRefresh
刷新缓存
| 属性 | 默认值 | 说明 |
|----------------------------|------------------|-------------------|
| refresh | 未定义 | 表示间隔多久刷新缓存 |
| stopRefreshAfterLastAccess | 未定义 | 多久没有访问,就停止刷新缓存 |
| refreshLockTimeout | 未定义 | 刷新实例进行加锁时长,控制并发刷新 |
| timeUnit | TimeUnit.SECONDS | 时间单位 |
# 2.6 @CachePenetrationProtect
当缓存访问未命中的情况下,对并发进行的加载行为进行保护。
目前只支持当 前应用内的保护,即同一个JVM中同一个key只有一个线程去加载,其它线程等待结果
| 属性 | 默认值 | 说明 |
|----------|------------------|------|
| value | true | 是否开启 |
| timeout | 未定义 |
| timeUnit | TimeUnit.SECONDS | 时间单位 |
# 2.7 @CreateCache
创建Cache实例,可以通过编码的形式对Cache进行操作
| 属性 | 默认值 | 说明 |
|--------------|------------------|--------------------------------------------------|
| area | default | 缓存分类,相当于命名空间 |
| name | 未定义 | 指定缓存实例的名字 |
| timeUnit | TimeUnit.SECONDS | 过期时间单位,默认为秒 |
| expire | 未定义 | 过期时间 |
| localExpire | 本地缓存 | 当为多级缓存时 该时间表示本地缓存过期时间 |
| cacheType | CacheType.REMOTE | 缓存类型 remote 远程缓存 local 本地缓存 both 多级缓存 |
| localLimit | 未定义 | 本地缓存限制数量 当cacheType为local,both时生效,若不配置 会以全局的配置生效 |
| serialPolicy | 未定义 | 指定value的序列化方式 使用方式bean:beanName 在spring 容器中管理的名称 |
| keyConvertor | 未定义 | 指定key的序列化方式 |