当前位置: 首页 > news >正文

redis实现分布式锁

什么时候要用到分布式锁?

集群情况下的定时任务、抢单、幂等性场景

抢券逻辑

当库存为1时,多线程的情况可能出现超卖。当两个线程都查询到数据库库存还有1时,都去扣减库存,可能导致库存出现复数。

如何解决呢?

加锁。单体项目的情况下:给某一个线程加锁(SETNX锁),其他抢券线程阻塞,直到锁释放才能修改库存。

但是往往项目是集群部署。同一份代码部署在多态服务器上 。SETNX锁是本地锁,这个锁是属于JVM的,每一个服务都有各自的JVM,只能解决同一个同一个JVM下线程的互斥,不能解决多个JVM下线程的互斥。因此集群模式下,不能使用本地锁。

http://www.lqws.cn/news/167077.html

相关文章:

  • 企业配电系统安全升级,从局放监测开始
  • C语言 标准I/O函数全面指南
  • 深度学习习题3
  • 【深度学习-Day 23】框架实战:模型训练与评估核心环节详解 (MNIST实战)
  • 亲测解决self.transform is not exist
  • Python Day44
  • 设计模式(代理设计模式)
  • NLP学习路线图(二十六):自注意力机制
  • Wireshark使用教程(含安装包和安装教程)
  • JS深入学习 — 循环、函数、数组、字符串、Date对象,Math对象
  • 哈希算法实战全景:安全加密到分布式系统的“核心引擎”
  • 深入理解Java多态性:原理、实现与应用实例
  • 【Linux手册】冯诺依曼体系结构
  • day34- 系统编程之 网络编程(TCP)
  • ObjectMapper 在 Spring 统一响应处理中的作用详解
  • AI Agent 项目 SUNA 部署环境搭建 - 基于 MSYS2 的 Poetry+Python3.11 虚拟环境
  • 【操作系统】死锁
  • JSON Web Token (JWT) 详解:由来、原理与应用实践
  • 在 Ubuntu 24.04 LTS 上安装 Jenkins 并配置全局工具(Git、JDK、Maven)
  • LeetCode-70. 爬楼梯
  • 八、Python模块、包
  • QT中使用libcurl库实现到ftp服务器的上传和下载
  • C语言 — 编译和链接
  • 体制内 AI写作:推荐材料星 AI文章修改润色
  • 11. vue pinia 和react redux、jotai对比
  • 互联网大厂Java求职面试:AI与大模型技术在企业知识库中的深度应用
  • minimatch 详解:功能、语法与应用场景
  • uniapp+vue3实现CK通信协议(基于jjc-tcpTools)
  • IDEA 包分层显示设置
  • BT Panel密码修改