重点是:redis是顺序执行的。

1. 先去数据库 获取商品ID

2. 拿商品ID 去redis 中查是否存在数据,如果存在则,当前数据处于一个被其他进程或线程暂用的状态,如果redis中没有找到,则添加数据 使用setnx( K , V)   存储数据或者 set指令,给当前操作的数据添加锁,操作完数据后要解锁使用del指令删除redis里面的锁。

3. 但是需要记住,加锁、释放锁、锁超时 三种状态, redis添加数据可 设置过期时间30S, 防止应为订单服务宕机,导致锁不能及时关闭(锁超时的解决方案)。

 

SET key value

含义:

          将字符串值 value 关联到 key 。

          如果 key 已经持有其他值, SET 就覆写旧值,无视类型。

 

SETEX key seconds value

该命令相当于将下面两行操作合并为一个原子操作

         SET key value
         EXPIRE key seconds  # 设置生存时间

 

Redis 分布式锁的解决方案

 

 

 

 

 

相关文章:

  • 2022-12-23
  • 2021-12-24
  • 2021-08-21
  • 2021-11-20
  • 2021-07-25
  • 2021-06-14
  • 2022-01-24
  • 2022-12-23
猜你喜欢
  • 2021-11-13
  • 2021-11-30
  • 2021-09-22
  • 2021-05-12
  • 2022-01-20
相关资源
相似解决方案