Home
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 设计模式
  • JavaSE
  • JVM
  • JUC
  • Netty
  • CPP
  • QT
  • UE
  • Go
  • Gin
  • Gorm
  • HTML
  • CSS
  • JavaScript
  • vue2
  • TypeScript
  • vue3
  • react
  • Spring
  • SpringMVC
  • Mybatis
  • SpringBoot
  • SpringSecurity
  • SpringCloud
  • Mysql
  • Redis
  • 消息中间件
  • RPC
  • 分布式锁
  • 分布式事务
  • 个人博客
  • 弹幕视频平台
  • API网关
  • 售票系统
  • 消息推送平台
  • SaaS短链接系统
  • Linux
  • Docker
  • Git
GitHub (opens new window)
Home
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 设计模式
  • JavaSE
  • JVM
  • JUC
  • Netty
  • CPP
  • QT
  • UE
  • Go
  • Gin
  • Gorm
  • HTML
  • CSS
  • JavaScript
  • vue2
  • TypeScript
  • vue3
  • react
  • Spring
  • SpringMVC
  • Mybatis
  • SpringBoot
  • SpringSecurity
  • SpringCloud
  • Mysql
  • Redis
  • 消息中间件
  • RPC
  • 分布式锁
  • 分布式事务
  • 个人博客
  • 弹幕视频平台
  • API网关
  • 售票系统
  • 消息推送平台
  • SaaS短链接系统
  • Linux
  • Docker
  • Git
GitHub (opens new window)
  • 分布式锁介绍
  • redis实现分布式锁缺陷
    • setnx实现分布式锁缺陷
  • 可重入锁
  • 锁重试
  • 锁超时
  • 主从一致性
  • 分布式锁
Nreal
2024-04-04
目录

redis实现分布式锁缺陷

# setnx实现分布式锁缺陷

  • 重入问题:可重入锁的意义在于防止死锁;

    如HashTable,其方法都是使用synchronized修饰的,假如他在一个方法内,调用另一个方法,如果是不可重入的,则死锁;

  • **不可重试:**当线程在获得锁失败后,应该能再次尝试获得锁;

  • **超时释放:**锁超时释放虽然避免死锁,但如果是业务执行耗时较长,也会导致锁释放,存在安全隐患

  • **主从一致性:**如果Redis提供了主从集群,当我们向集群写数据时,主机需要异步的将数据同步给从机,而万一在同步过去之前,主机宕机了,就会出现死锁问题

分布式锁介绍
可重入锁

← 分布式锁介绍 可重入锁→

Theme by Vdoing | Copyright © 2021-2024
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式