使用缓存的好处:减少服务器的压力,数据查询速度快。解决数据响应慢的问题。
轮播图
广告
菜单
一般情况下更新数据表时,缓存的操作:先更改数据表,然后删除缓存。
场景:当我们更改数据表后,缓存还没来的及更改。而我们项目并发比较高,此时用户来了一个查询,他走的就是缓存的数据。查到的就是脏数据。
解决方案一:
https://www.cnblogs.com/rjzheng/p/9041659.html
https://mp.weixin.qq.com/s/gYQvP69sao8U0azuNRMG1w
延时双删
public void write(String key,Object data){
redis.delKey(key); // 先淘汰缓存
db.updateData(data); // 再写数据库(这两步和原来一样)
Thread.sleep(1000); // 休眠1秒
redis.delKey(key); // 再次淘汰缓存
}
这么做,可以将1秒内所造成的缓存脏数据,再次删除。
那么,这个1秒怎么确定的,具体该休眠多久呢?
针对上面的情形,读者应该自行评估自己的项目的读数据业务逻辑的耗时。然后写数据的休眠时间则在读数据业务逻辑的耗时基础上,加几百ms即可。这么做的目的,就是确保读请求结束,写请求可以删除读请求造成的缓存脏数据。
原文:https://www.cnblogs.com/itlihao/p/14344439.html