[分布式锁]:Redis与Redisson

文章目录

  • 1 分布式锁
    • 1.1 为什么需要分布式锁?
      • 1.1.1 引入业务场景
      • 1.1..2 本地锁与分布式锁
    • 1.2 分布式锁核心思想
    • 1.3 基于Redis实现分布式锁
      • 1.3.1 基于Redis实现分布式锁问题
      • 1.3.2 问题时间线分析
  • 2 Redisson入门
    • 2.1 Redisson快速实现
    • 2.2 开门狗机制
    • 2.3 加锁的实现原理

1 分布式锁

1.1 为什么需要分布式锁?

1.1.1 引入业务场景

业务场景:在物流系统中,快递员提交支付请求,由于网络等原因一直没有返回二维码,此时快递员在发起一次请求,这样就会生成2个订单,这就重复了不符合业务场景,因此我们就要在生成交易订单时加锁,若获取到锁就执行,否则就抛出异常。

1.1…2 本地锁与分布式锁

锁的定义:用于保障并发访问时数据的一致性、可见性和安全性。在多线程中为避免数据竞争常使用锁来限制对共享资源的访问。

本地锁:诸如synchronized、Lock锁等,只适用于单体项目锁定,在多个节点的分布式项目中不适用。

分布式锁:诸如Redisson、ZooKeeper等,适用于分布式多节点锁定。

1.2 分布式锁核心思想

实现分布式锁,可以借助Redis的setnx命令实现,使用该命令时,若key存在,则返回1,若key不存在,则返回0,也就意味着key只能设置一次,假设有多个线程同时设置值,只有一个能设置成功,这样就得到互斥效果,即达到锁的效果。

setnx命令演示:
[分布式锁]:Redis与Redisson_第1张图片

1.3 基于Redis实现分布式锁

1.3.1 基于Redis实现分布式锁问题

1.3.2 问题时间线分析

2 Redisson入门

2.1 Redisson快速实现

2.2 开门狗机制

2.3 加锁的实现原理

你可能感兴趣的:(分布式·微服务,Redis,组件,分布式,redis,java)