大家好,今天小编关注到一个比较有意思的话题,就是关于cpu 缓存一致性的问题,于是小编就整理了1个相关介绍cpu 缓存一致性的解答,让我们一起看看吧。
DB读写分离情况下,如何解决缓存和数据库不一致性问题?
有两种方案。
先来了解什么情况下会产生缓存和数据库数据不一致。查询数据时优先从缓存中取,如果缓存没有就查询数据库并且写入缓存。如果数据库数据改变了则清除缓存。在正常情况下是没有问题的。但是在服务的并发非常高的情况下,删除了缓存此时数据库还没来得及更新完数据就又有查询请求来了,这时候读到的还是旧数据并且还会将旧数据写入缓存。此时就造成了缓存和数据库不一致。
第一种解决方案:延时删除。在改变数据库数据时清除缓存的操作延时一段时间,这段时间可以非常短,只需要保证数据库写操作完成就可以了。但在实际环境中我们并不知道数据库什么时候才把数据写完成,因此这段时间不好控制,短了的话起不到作用,长了的话影响体验。不过在一般情况下这种方式已经可以解决问题了。
另一种方案是利用数据库的binlog,订阅binlog当数据完成更新时用消息来通知删除缓存。这种方案可以确保数据库更新操作完成并且及时更新缓存。
到此,以上就是小编对于cpu 缓存一致性的问题就介绍到这了,希望介绍关于cpu 缓存一致性的1点解答对大家有用。