【Redis】解决Redis并发竞争key问题

解决Redis并发竞争key问题

问题:多个客户端set同一个key

场景:

场景一:多个请求对商品减库存的操作流程

○ 取出库存值
○ 计算新的库存值
○ 写入新的库存值
请添加图片描述

场景二:

○ 三个请求有序的修改某个key,正常情况数据版本应该是123,但是由于网络原因变成了132,出问题了

怎么解决?

乐观锁

○ 适用于大家一起抢着改同一个key,对修改顺序没有要求的场景
○ 如果redis使用数据分片,这个方法不适用
○ 实现:使用watch命令来实现
请添加图片描述

分布式锁

○ 适合于分布式环境,不用关心redis是否是分片集群模式
○ 实现:Zookeeper、Redis

时间戳

○ 适合有序场景
○ 实现:
■ 写入时顺便写一个时间戳
■ 写入之前比较一下自己的时间戳是否早于现有记录的时间戳,如果早于的话,说明自己的时间戳过期了,就不需要写入了
请添加图片描述

消息队列

○ 并发量很大的情况下,可以使用消息队列进行穿行处理,这在高并发场景下是一种常见的解决方案

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值