在msql和redis同步数据的过程中,发现
先删redis缓存 再更新数据库 在并发的情况下有一个明显的错误,就是当线程1删除缓存后,线程2读缓存,线程1去数据库更新新数据,线程2读出来的也是之前库里的旧数据,导致之后的请求都是缓存里的脏数据
先更新数据库,再删除缓存,在高并发的环境下也会导致线程1在更新的这一段时间内,线程2获取缓存时拿到的数据不一致
后来采用到了redis延时队列对redis缓存进行双删,首先要先创建redis延时任务队列 , 在更新数据库中的数据后 删除缓存 然后再调用延时任务 进行二次删除
最后起一个py脚本运行即可实现redis二次双删