有用到本地缓存和redis缓存
本地缓存与redis缓存都存入KJNO及缓存的更新时间,如果本地缓存的KJ更新时间与redis的KJ更新时间不一样、或者本地缓存没有(首次或者缓存时间到期),就进入到查询数据库的方法,数据库查询是到从库查询,从库查询会有时间不及时更新的问题,所以从数据库查询出来的数据,还要跟当前放在缓存的数据进行比较,如果Q数及NO相同,那么不做任务操作,直接返回旧数据,等下一个新请求继续查询,如果查询到是新的数据,将数据放到redsi缓存,并更新redis的更新时间,然后最外层的时候发布时间不一致,就会更新本地缓存数据及本地缓存的更新时间
测试场景
修改redis 的KJ更新时间跟本地缓存的不一致
A首次进入,日志查看,进入查询数据库的方法,查到数据返回NO1,保存到本地缓存,此时与Redis缓存相比是NO相同,更新时间不同。
新一期KJ之前再次进入,日志查看,还是进入查询数据库的方法,查到数据返回NO2和上一步本地缓存NO1比较,不做操作,直接返回旧的数据,此时本地缓存和Redis缓存的更新时间还是不一样。
新一期KJ后再次进入,日志查看,还是进入查询数据库的方法,查到数据返回NO3和上一步本地缓存NO1比较,发现不一样,将查询结果存入Redis缓存,并同步更新Redis的更新时间,第一个业务请求发起并响应后,强制更新本地缓存数据及本地缓存的更新时间。