# cachefresh **Repository Path**: RemoteControl/cachefresh ## Basic Information - **Project Name**: cachefresh - **Description**: 基于spring data cache,让redis热点数据一直处于缓存中,提升性能,避免冷启动。 注意到一个现象,很多用缓存的同学 ,最终redis缓存只用50M,不敢用不能用。 业务逻辑很简单,缓存到期再次执行缓存接口以刷新缓存数据。 以后可以大胆加缓存,大不了时间放短一点~_~。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 1 - **Created**: 2023-07-17 - **Last Updated**: 2023-11-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

Build Status Coverage Status Downloads

## 系统说明 - 基于 Spring Boot 2.5、 spring data cache** ## 文档视频 ## 快速开始 ### 核心依赖 | 依赖 | 版本 | |-------------------|--------| | Spring Boot | 2.5.8 | | hutool | 5.7.16 | | spring-boot-starter-data-redis | 2.5.8 | ### 原理描述 bblocks 缓存更新(方案目前确认方案步骤) 1、收集缓存的函数入库(函数+入参),
2、再通过redis的失效监控,及时更新缓存,简单说就是缓存失效了,再执行一次失效key对应的函数 启动rediskey 失效配置见:https://www.cnblogs.com/tanpenggood/p/14328096.html redis.conf=>notify-keyspace-events Ex 命令行(临时)=>CONFIG SET notify-keyspace-events Ex ### 配置说明 ``` bblocks: #缓存刷新规则 cachefresh: #规则列表:CommunityInfo::*/CommunityInfo::*[1],中括号指定规则,具体见:defaultFreshRule matchUrlList: - CommunityInfo::*[12] - CommunityProd::* monitorDb: 1 #默认的缓存刷新规则,1=按访问次数刷新(1=内存计数,12=redis计数),2=恒定刷新,3=按容量,0=不刷 defaultFreshRule: 12 #按访问次数刷新 -最大访问次数(太大会导致无法降下来),配置100,会在100*toFreshCountRate*默认的缓存周期后放弃缓存,比如缓存周期为5分钟 defaultFreshCountMax: 100 #按访问次数刷新 -系数(),访问次数*系数=可刷新次数 toFreshCountRate: 0.2 #按访问次数刷新 -刷新中被动刷新的缓存 是否刷新(默认刷新) freshPassiveCacheFlushFlag: 1 #最大内存量(<100),内存限制模式才有用(<1.0 合适内存总量百分比模式,>1.0则内存绝对量(mb)) limitMemery: #被动刷新开关(默认关) unative: enabled: true ``` 注解启动: @EnableUnactiveFresh 具体demo见cache-fresh-test ### 缓存刷新启动条件 1. 启动spring data cache redis 2. spring注册RedisTemplate 3. bblocks.cachefresh.matchUrlList 配置需要刷新的地址 4. bblocks.cachefresh.unative.enabled=true ### 刷新策略 1. 按访问次数刷新(1=内存计数,12=redis计数) 2. 恒定刷新 3. 按容量 4. 不刷 5. 其他测量自行定制 ### 主要模块 ``` cache-frash ├── cache-fresh-core -- 刷新模块 └── cache-fresh-test -- 测试项目 ``` ### 使用场景 1. 系统参数,缓存周期1分钟恒定刷新 2. 首页缓存,缓存周期1分钟恒定刷新 3. 分类等,缓存周期1分钟恒定刷 4. 产品列表,缓存周期1分钟按redis容量刷新 5. 用户相关的数据,缓存周期1分钟可以按频率退出缓存 6. 等等其他的策略