如何校验数据库和缓存之间数据的一致性?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

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

小旋风柴进 2016-03-11 16:29:52 2221

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

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

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

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

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

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

缓存 NoSQL 关系型数据库 MySQL 数据库 Redis
分享到
取消 提交回答
全部回答(1)
  • 小旋风柴进
    2019-07-17 18:59:34

    首先“ 确保从缓存读取的数据是最新的”这个想法就有点走入误区,既然是缓存,那么必然是有对实时性可以有一定的容忍度的数据,容忍度的时间可以是5分钟,也可以是5小时,取决于不同的数据类型。然后,一定要求是实时性的数据,就不应该从缓存里读取,比如 库存 。再比如价格,既可以选择直接从数据库读实时数据,也可以选择缓存较短时间,甚至做到一个网站里不同页面的价格读取采用不同的方案,以“京东商城”为例,京东的商品列表页面的价格是有5分钟的缓存时间的,而它的商品详情页的价格却是实时的

    0 0
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题
推荐课程