缓存与DB数据一致性问题解决的几个思路
使用缓存必然会碰到缓存跟真实数据不一致的问题,虽然我们会在数据发生变化时通知缓存,但是这个延迟时间内必然会导致数据不一致,如何解决一般有下面几个思路:
首先,当这个延迟如果在业务上时可以接受的,比如文章阅读、评论次数这样的缓存数据,这样的问题这里不考虑。
类似数据库分布式事务的方式
可以采用类似数据库分布式事务的方式,当数据发生变化时,通知缓存和db,缓存和db均用乐观锁实现事务。典型的通知可以用mq(消息队列)。
参考:
http://coolshell.cn/articles/10910.html
巧用缓存主键
当缓存过期时,缓存的主键发生变化,比如:文章的缓存,我们主键用文章id+文章最后更新时间。一旦文章发生变化,获取缓存的主键也发生变化,自然就确保每次更新后,缓存取得是最新的数据。
参考:
web应用的缓存设计模式
http://robbinfan.com/blog/38/orm-cache-sumup
参考资料:
cache一致性问题
http://blog.csdn.net/jackoo/article/details/3936070
此文链接:http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E7%9F%A5%E8%AF%86%E5%BA%93/18683.shtml
转载请注明出处:缓存与DB数据一致性问题解决的几个思路 - 博客园