08_Redis分布式锁

redis分布式锁

一、锁的种类

  1. 单机版同一个JVM虚拟机内,synchronized或者lock接口
  2. 分布式多个不同JVM虚拟机,单机的线程锁机制不再起作用,资源类在不同的服务器之间共享了。

二、一个靠谱分布式锁需要具备的条件和刚需

  1. 独占性

    任何时刻只能有且仅有一个线程持有

  2. 高可用

    若在redis集群环境下,不能因为某一个节点挂了而出现获取锁和释放锁失败的情况

    高并发情况下,依旧性能良好

  3. 防死锁

    杜绝死锁,必须有超时控制机制或者撤销操作,有个兜底终止跳出方案

  4. 不乱强

    防止张冠李戴,不能私下unlock别人的锁,只能自己加锁自己释放,自己上的锁必须自己解

  5. 重入性

    同一个节点的同一个线程如果获得锁之后,它也可以再次获取这个锁

三、分布式锁

  1. setnx key value
  2. set key value [EX seconds] [PX milliseconds] [NX] [XX]

四、重点

JUC中AQS锁的规范落地参考,可冲入锁考虑,lua脚本,redis命令 逐步实现分布式锁

五、案例

六、手写分布式锁分析

你可能感兴趣的:(redis,redis,分布式,数据库)