缓存的变更(JVM本地缓存->Redis分布式缓存)

在一次需求修改中,下游的服务附加提出了,针对某个业务数据缓存的生效时间的要求

原JVM设计方案:

采用jvm本地缓存机制,定时任务30秒刷新一次

现在redis方案:

  1. 因为很多地方使用了这个业务数据缓存,使用方面不能改动过多
  2. 因为是分布式部署,如果只使用jvm缓存,无法更新其他的服务器中的缓存数据,达不到立刻生效的要求
  3. 不使用二级缓存的原因:理由和第二个一样,如果优先使用jvm时,哪怕更新了redis,其他服务器也会先用jvm缓存(另外为什么会使用二级缓存?:因为jvm本地缓存更快而已,还得加重了架构的负担,为了一个需求)

所以:直接把维护jvm业务缓存改成redis来维护

那便需要考虑主动刷新 被动刷新 生效时间等

  1. 被动刷新:依旧使用jvm缓存的定时任务机制,30秒更新一次(无改动,使用原本的机制)
  2. 主动刷新:由于生效时间是一秒生效,则在修改和更新后,需要立即主动刷新该缓存(改动少,维护都在一个项目里,不需要采用什么监听mysql表的东西)

修改中的收获:

  1. 工具类中获取注入的问题 BeanUtil.getBean(RedisTemplate.class);
  2. redis Pipeline管道提速 redisTemplate.STRINGS.setEx(redisCacheList,refreshTime);
  3. 分割思想:更小的粒度 如:redis 一个key存储一个表的数据太大了,则根据表中关键key进行切分
相关推荐
信仰_2739932439 小时前
Redis红锁
数据库·redis·缓存
爬山算法11 小时前
Redis(120)Redis的常见错误如何处理?
数据库·redis·缓存
野生技术架构师11 小时前
盘一盘Redis的底层数据结构
数据结构·数据库·redis
Feng.Lee12 小时前
聊聊缓存测试用例设计方案
缓存·测试用例
R.lin12 小时前
memcached 的核心工作机制、优缺点、适用场景以及常见问题的处理方式
数据库·缓存·memcached
bug总结13 小时前
更新原生小程序封装(新增缓存订阅)完美解决
前端·缓存·小程序
修行者Java14 小时前
JVM 内存结构的详细介绍
jvm
hygge99914 小时前
JVM GC 垃圾回收体系完整讲解
java·开发语言·jvm·经验分享·面试
笃行客从不躺平14 小时前
CPU 缓存 高并发探索
缓存
freedom_1024_18 小时前
LRU缓存淘汰算法详解与C++实现
c++·算法·缓存