redis(solr)如何与数据库同步?保证一致性?

redis(solr)如何与数据库同步,保证一致性,        时效性

一般我们通过事件来通知进行同步,保证数据库与redis的一致性。
比如 库存变化数据库同步问题
第一种:首先 当用户操作影响库存,我们对库存进行增减 ,直接修改了redis之后 发送一条rabbitmq消息 消息内容是通知后台xx商品库存被修改为xx
后台有个消费者专门针对库存变化进行消费,根据队列消息内容将修改后的库存同步到mysql。

第二种:也可以使用定时方式进行同步,直接操作redis后,并不立即更新,后台有一个任务每隔固定的时间,执行任务将redis中的数据同步到mysql中。


第一种详细解释:
    我们rabbitmq使用的是 订阅模式  ,我们会设置一个“商品库存同步事件”的主题,每当我们操作了redis中的商品库存后,就会将商品skuid和库存信息 发送mq消息到这个主题。
    然后后台的消费者是一个任务线程池,支持多个线程同时执行,我们预设的是20个线程来进行商品库存的同步(秒杀),线程实现的逻辑是根据收到的信息 即skuid和库存来通过调用dao更新数据库。只有操作数据库同步成功
    才会返回ack信息确认消息被消费掉,否则将放回队列重新执行同步。


solr或者静态化页面如何跟mysql一致?
这个方案与上面的第一种方案类似 只不过是先更新数据库 然后通过消息队列异步通知后台任务更新静态化页面或者是solr索引。

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值