数据库和缓存数据同步问题

在我们日常所做的项目中,尤其是电商项目中对缓存的要求是非常高的,例如在查询商品详情时,我们会将商品的详细信息保存到缓存中(例如:redis),如此可以很大程度的提高查询效率,提高用户体验。但是随之而来的问题是”数据库和缓存之间的数据同步问题“,在这里我总结两种缓存同步的策略:
传统思路:(先数据库后缓存)
缓存同步重点是针对用户做出cud操作时进行。传统思路是当发生cud操作时,先更新数据库,然后根据对应的信息将缓存置为失效(例如:当一个商品的信息发生变化后,我们先对数据中该商品的信息进行更新,然后根据对应的key找到缓存中该商品的信息,删除缓存中的数据,当用户再次查询的时候缓存中没有,去数据库中查询,然后将数据库的数据同步到缓存)。
比较安全一点的思路:(先缓存后数据库)
这种方式是当发生cud操作时,先更新缓存,将数据进行持久化处理然后异步同步更新到数据库中。

总结:
以上两种各有利弊,根据需求选择不同的同步方式,现在说说两种方式的弊端:第一种先数据库后缓存策略,这种方式可以保证数据不会出现丢失,但是当缓存同步过程中如果数据库更新成功了,但是当更新缓存出现问题没有更新,当用户再次去访问的时候,缓存中是存在值的,但是此时的值已经是“脏数据”了。第二种针对这一问题做了处理,先更新缓存,保证用户每次读到的数据都是最新的数据,然后异步的去同步数据库,这种策略的缺点是有时可能造成数据的丢失(如果数据的持久化做的不好的话)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值