第八天业务流程

8-1 分布式锁有哪些实现方式? redis是如何实现分布式锁的? 讲一讲Redisson实现分布式锁的原理

分布式锁常见的方式有以下两种:

  • 基于数据库:使用数据库中的行级锁或乐观锁实现分布式锁。通过在数据库中插入一条带有唯一约束的记录作为锁标识,控制并发访问。
  • 基于缓存:利用分布式缓存(如Redis)的原子性操作实现分布式锁。通过在缓存中设置一个特定的键值对作为锁标识,控制并发访问。

Redis实现分布式锁的基本原理是利用Redis的操作原子性和单线程特性。
通过使用SET命令的NX(not exist)参数,实现了在分布式环境下的锁操作的原子性和一致性。这样可以保证在同一时间只有一个客户端能够成功获取锁,从而实现对共享资源的互斥访问。

Redisson实现分布式锁的原理

  • 获取锁:当一个客户端尝试获取锁时,Redisson会使用Redis的SETNX命令来尝试在Redis中设置一个指定的键值对作为锁标识。如果该键值对不存在,则表示获取锁成功;否则,获取锁失败。
  • 设置过期时间:在获取锁成功后,Redisson会为这个锁设置一个过期时间。即使持有锁的客户端崩溃或忘记释放锁,锁也会在一段时间后自动过期,避免死锁的情况发生。
  • 释放锁:当客户端使用完锁之后,需要主动调用释放锁的操作。Redisson会使用Lua脚本来保证释放锁的原子性,避免因为网络延迟或其他原因导致的不一致性。
  • 支持可重入锁:Redisson还支持可重入锁的特性,同一个线程可以多次获取同一个锁,需要对应释放相同次数的锁才能真正释放锁。

通过利用Redis的原子性操作和分布式特性,Redisson提供了一种可靠而高效的分布式锁实现,方便开发人员在分布式环境下进行并发控制。

8-2 补充:介绍一下你们项目中优惠券的功能

我们项目中优惠券的使用,系统会根据优惠券的类型,系统需要计算出用户享受的优惠金额或折扣,并在结算时自动扣减相应的金额。其中若用户有多个优惠券只能选择一张优惠券进行使用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值