redis数据一致性,开发中关于缓存和数据同步问题

在开发中出现很多关于缓存和数据共存问题,本小G网上翻阅cache aside pattern 一些资料,加上项目体验写下
写下这一小简,大家一块来探讨:
使用场景:在使用redis来做数据缓存,减轻数据压力和速度,但是有一个问题就是缓存和mysql数据如何数据一致
一般开发设计为:重点内容

  1. 查询流程:如果在缓存查询到数据,就直接返回缓存数据,流程end;
  2. 查询流程:如果查询不到,就查询数据库,然后进行insert cache数据,流程end;
  3. 更新流程:更新库,update或dele缓存,流程end;
  4. 更新流程:新增库,
    一般开发流程如上(1,2,3,4),但是会出现并发read和write操作,这样就可以会出现读时候在insert cahe的时候会insert,库更新之前数据,产生脏数据,小G:虽然读一般比较快,这种概率很低但是还是存在如上,但是会出现并发read和write操作,这样就可以会出现读时候在insert cahe的时候,会insert,库更新之前数据,产生脏数据,小G:虽然读一般比较快,这种概率很低但是还是存在
    个人设计简介:
    在数据并不是很大(其他文章中提到:canal阿里这中原理,不过感觉动静有点大,哈,如果并发不是很大),首先
    个人认为如果不进行锁(小G:如果加锁可以在,insert cache时候进行判断是否有锁,如果有不进行insert操作,这中设计我个人感觉,还是影响力比较小),这种脏数据都会存在,但是针对不是很注重这种事物脏数据,可以放宽下,
    设计如下:
    1、加锁对数据在进行缓存操作下(业务不是很注重脏数据可以忽略这点)
    2、进行先加缓存然后再更新库,如果更新库有问题,进行删除缓存,这样就不会出现类似长时间存在脏数据无法解决问题
    3、增加缓存的有效时间,这样也可以减少脏数据存活周期;
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值