如何确保缓存中的数据和数据库中的数据一致(缓存数据一致性)
存在两种方式可以使用:
第一种方式:双写模式
解释:双写默认也就是在更新数据库的同时,再将缓存中的数据进行更新。
存在问题:
在高并发的环境下,可能会出现暂时性的脏读问题,当缓存过期之后,就会获取到正确的数据
第二种方式:失效模式
解释:失效模式,就是在数据库进行更新之后将缓存中的数据进行删除,在访问的时候在向数据库中查询数据并保存。
存在问题:
在高并发的环境下,也会产生脏读问题,造成的结果就是在更新了数据库之后,在缓存中保存的数据任然是修改之前的数据
解决方式:
如果在要求缓存数据一致性要求不高的环境下,例如菜单、商品信息等大可不用考虑出现的脏读问题,只需要在存放缓存的时候添加上过期时间即可,到了过期时间,就会同步数据库中的数据;
如果是在要求缓存数据一致性较高的环境下,我们可以添加读写锁解决上述两种方案的脏读问题;
如果是在要求缓存数据一致性超高,实时性的环境下,我们大可不添加缓存,直接查询数据库即可,就是会慢一点。
本文作者:just1t
本文链接:https://www.cnblogs.com/just1t/p/17082577.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步