# 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的序列化方式 |