Redission分布式锁解决高并发环境下超买超卖的问题

在高并发环境中,分布式锁能够防止超买现象,避免数据错误。Redis凭借其单线程模式和高效读写,常被用于实现分布式锁。Redission作为Redis的客户端,提供了一种通过LUA脚本保证原子性的分布式锁实现,并有WatchDog功能自动延长锁的过期时间。RedLock(红锁)通过在多个Redis节点上加锁,确保大多数节点成功加锁才能执行,增强系统容错性。
摘要由CSDN通过智能技术生成

分布式锁:

在高并发环境下,由于大量请求同时访问一个资源进行操作,很容易产生超买的情况,造成数据错误,如果是单服务器情况下,我们可以通过普通的锁去控制,但是解决不了分布式环境的情况,所以我们用到了分布式锁来保证互斥。

Redis:

Redis强大之处在于它不仅仅是一个NO-SQL数据库,他有丰富的数据类型,和基于内存高效的读写速度。而且他是单线程单进程模式,可以将并发请求变成串行访问,这个就是为什么可以用它实现分布式锁来解决高并发下资源争抢问题。

Redis实现简单的分布式锁:

Redis可以简单通过setNx去实现分布式锁,主要通过setNx设置key,一般key就是争抢资源的id,如商品A的id,设置过期时间,当用户A去操作商品A的时,设置key ,B如果也要操作,发现Redis已经存在key,就只能等待。但其实这样的方案存在一定的问题。如如果用户A去设置完Key之后,服务器挂了,导致过期时间没有设置成功,就会出现问题,key一直没有释放,导致其他请求也不能获取。因为设置key和expiretime不是原子性操作,这种情况是有可能方式的,为了避免这种情况,我们必须把这两步合为一步(加syn锁就行)。

Redission的分布式锁:

Redission是一个基于Redis的优秀客户端,他对redis的分布式锁有很完善的实现,
简单实现如下:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值