1.背景:数据库是MySQL,缓存是Redis,redis主要用来读缓存,现需要检测数据可和缓存之间的一致性,确保从缓存读取的数据是最新的。现阶段检验一致性的方法是迭代比较每条记录是否一致。
2.问题:目前检验的方法不宜扩展,容易受限。如果数据量越来越大、记录数越多,则检查一致性的时间会越来越长,这对运行的服务也是有影响的。
3.改进:设置了两个定时器
一个是定时(时间间隔短如10min)扫描检查数据的一些重要属性如库存价格。
二是定时(时间间隔长如1h)扫描所有数据的属性值。
请教大家在应用中是否有遇到该类问题及其解决方法?
首先“ 确保从缓存读取的数据是最新的”这个想法就有点走入误区,既然是缓存,那么必然是有对实时性可以有一定的容忍度的数据,容忍度的时间可以是5分钟,也可以是5小时,取决于不同的数据类型。然后,一定要求是实时性的数据,就不应该从缓存里读取,比如 库存 。再比如价格,既可以选择直接从数据库读实时数据,也可以选择缓存较短时间,甚至做到一个网站里不同页面的价格读取采用不同的方案,以“京东商城”为例,京东的商品列表页面的价格是有5分钟的缓存时间的,而它的商品详情页的价格却是实时的
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。