网站seo数据分析,龙岩企业网站建设制作,用帝国cms做视频网站,大连 网站建设 有限公司在一次需求修改中#xff0c;下游的服务附加提出了#xff0c;针对某个业务数据缓存的生效时间的要求 原JVM设计方案#xff1a;
采用jvm本地缓存机制#xff0c;定时任务30秒刷新一次
现在redis方案#xff1a;
因为很多地方使用了这个业务数据缓存#xff0c;使用方… 在一次需求修改中下游的服务附加提出了针对某个业务数据缓存的生效时间的要求 原JVM设计方案
采用jvm本地缓存机制定时任务30秒刷新一次
现在redis方案
因为很多地方使用了这个业务数据缓存使用方面不能改动过多因为是分布式部署如果只使用jvm缓存无法更新其他的服务器中的缓存数据达不到立刻生效的要求不使用二级缓存的原因理由和第二个一样如果优先使用jvm时哪怕更新了redis其他服务器也会先用jvm缓存另外为什么会使用二级缓存因为jvm本地缓存更快而已还得加重了架构的负担为了一个需求
所以直接把维护jvm业务缓存改成redis来维护
那便需要考虑主动刷新 被动刷新 生效时间等
被动刷新依旧使用jvm缓存的定时任务机制30秒更新一次无改动使用原本的机制主动刷新由于生效时间是一秒生效则在修改和更新后需要立即主动刷新该缓存改动少维护都在一个项目里不需要采用什么监听mysql表的东西
修改中的收获
工具类中获取注入的问题 BeanUtil.getBean(RedisTemplate.class);redis Pipeline管道提速 redisTemplate.STRINGS.setEx(redisCacheList,refreshTime);分割思想更小的粒度 如redis 一个key存储一个表的数据太大了则根据表中关键key进行切分