以下这个是比较标准的redis缓存策略:
1.读:应用程序先从cache取数据,没有得到,则从数据库中取数据,成功后,放到缓存中。
2.读:应用程序从cache中取数据,取到后返回。
3.增删改:先把数据存到数据库中,成功后,再让缓存失效。
我现在对第三点感到疑惑,为什么更新完DB,然后去让缓存失效,而不是直接去更新缓存。我知道让缓存失效后,再去查的时候会命中不了缓存然后去读DB,然后再去更新缓存。那为什么不是在刚刚更新DB的时候就把缓存更新掉呢?
而且,万一有些场景,查数据的地方,只会去redis查,redis没有也不会去db里面查,针对这个情况,上面的第三条策略就不行了吧
保证了数据库更新成功在去更新缓存。如果刚刚更新DB的时候就把缓存更新掉,那么数据库更新失败,就会导致数据不一致。出现垃圾数据