欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > 12.29 redis缓存一致性

12.29 redis缓存一致性

2025/10/28 7:09:30 来源:https://blog.csdn.net/weixin_45448575/article/details/144808597  浏览:    关键词:12.29 redis缓存一致性

更新操作
如果先更新数据库再更新缓存

  1. 先更新缓存再更新数据库
    更新缓存为1
    更新缓存尾2
    更新数据库为2
    更新数据库为1
    那么最后缓存为2
    数据库为1
    数据不一致

  2. 先更新数据库,再更新缓存
    数据库为1
    数据库为2
    缓存为2
    缓存为1
    还是不一致

于是这种情况我们改为将缓存删除

  1. 先删除缓存,再更新数据库
    删除缓存
    读缓存,未命中
    写回缓存
    更新数据库

这样也会数据不一致

4.先更新数据库,再删除缓存
读缓存
读到的是以前缓存
更新数据库
删除缓存
写回

这也会数据不一致
但是这种几率比较小
因为先写回的速度要快于更新数据库

就是先更新数据库再删除缓存

先删除缓存再更新数据库会有问题码?

先删除缓存,然后这时候另外一个线程没读到,就会读取数据库然后写回缓存,然后数据库更新之后,就数据不一致了

然后后删除,因为先更新数据库,那么即使读取数据,没有读到,读数据库,就会写回到缓存,然数据库更新之后,会把这个写回值删除掉,由于更新数据库的速度比较慢,所以并不会写回在删除之后

说说缓存更新策略

旁路缓存
就是最常用的我们先更新数据库,然后再删除缓存
然后读的时候命中了直接返回吗,没命中的话,我们就读数据库,然后写回缓存
写穿/读穿
就是写到数据库的时候就写到缓存中去
写回
在cpu中,就是只写在缓存中,只有cache满了要被替换的时候才写道内存中

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词