1、分布式锁应用场景
首先思考一个问题,在多线程并发情况下,如何保证一个代码块在同一时间只能由一个线程访问?
答:我们很容易能够想到通过 “锁” 机制来保证,如:java的synchronized语法以及Reentrantlock类等。这样可以保证在同一个JVM进程内多个线程同步执行。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201228102838369.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3MjA1MzUw,size_16,color_FFFFFF,t_70)
但如果是在分布式的集群环境中,如何来保证不同节点的线程同步执行呢?
答:使用分布式锁。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201228103241725.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3MjA1MzUw,size_16,color_FFFFFF,t_70)
2、分布式锁的实现有哪些?
- Redis分布式锁
- Memcached分布式锁
- Zookeeper分布式锁
3、如何用Redis实现分布式锁?
使用 setnx 设置一个