高并发情况下redis的双写问题

redis的双写问题一般都是出现在高并发的情况下,什么是双写问题呢?就拿库存服务来说。

1、redis双写

redis双写问题就是当前端有一个修改数据请求发送到库存服务时,库存服务会将redis中的缓存进行删除,如果这时由于网络问题停顿了一秒(象征一下),恰恰有一个查询请求访问库存服务,库存服务就会去拉取redis中的数据,而这是由于redis中的缓存已经进行了删除,所以redis就会去数据库拉取数据到redis中,也就是这段时间的请求都会访问以前的旧数据,这就是redis中的双写问题。

2、解决办法

相信一些人已经想到了解决的方法,那就是队列。还拿库存服务来说,在库存服务中加入队列,当请求过来时就将请求保存进队列中,这样数据的不同步问题就会解决。这样就会出现有一个问题当队列中有一个更新请求,两个读请求。这样的话读请求会不会显得多余,是我们的队列很冗余,所以我们往往在队列中只保存一个读的请求。这样就会有一个极端的情况出现,就是当你更新完数据的时候,redis中的内存满了,读请求就发送过去,就会被redis中的缓存淘汰算法淘汰(LRU),而其他的读请求又进入不了队列所以就导致读请求被阻塞的情况。所以我们就需要设置一个超时时间,如果超时就会从数据库中拉取数据,要是数据库中也没有数据的话,那么redis缓存中也不会有数据。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值