开发者社区> 问答> 正文

如何校验数据库和缓存之间数据的一致性?

1.背景:数据库是MySQL,缓存是Redis,redis主要用来读缓存,现需要检测数据可和缓存之间的一致性,确保从缓存读取的数据是最新的。现阶段检验一致性的方法是迭代比较每条记录是否一致。

2.问题:目前检验的方法不宜扩展,容易受限。如果数据量越来越大、记录数越多,则检查一致性的时间会越来越长,这对运行的服务也是有影响的。

3.改进:设置了两个定时器

一个是定时(时间间隔短如10min)扫描检查数据的一些重要属性如库存价格。

二是定时(时间间隔长如1h)扫描所有数据的属性值。

请教大家在应用中是否有遇到该类问题及其解决方法?

展开
收起
小旋风柴进 2016-03-11 16:29:52 4719 0
1 条回答
写回答
取消 提交回答
  • 首先“ 确保从缓存读取的数据是最新的”这个想法就有点走入误区,既然是缓存,那么必然是有对实时性可以有一定的容忍度的数据,容忍度的时间可以是5分钟,也可以是5小时,取决于不同的数据类型。然后,一定要求是实时性的数据,就不应该从缓存里读取,比如 库存 。再比如价格,既可以选择直接从数据库读实时数据,也可以选择缓存较短时间,甚至做到一个网站里不同页面的价格读取采用不同的方案,以“京东商城”为例,京东的商品列表页面的价格是有5分钟的缓存时间的,而它的商品详情页的价格却是实时的

    2019-07-17 18:59:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载