一,分布式锁诞生的原因
为什么分布式锁会诞生?类似于淘宝双11的秒杀活动,同一件商品怎么才能只被一个用户抢到,其他用户抢不到?分布式锁就能巧妙地解决类似秒杀和抢单的问题。技术源于生活,更高于生活。对于阿里的那种的大型秒杀活动,分布式锁只是其中的一环,单单靠分布式锁不足以支撑那种大并发的情景,后续解决方案会陆续更新。本期只讲解分布式锁。
二,常见的分布式锁
1,基于数据库实现的分布式锁
基于表实现的分布式锁,如果有多个请求同时提交到数据库的话,数据库会保证只有一个操作可以成功,那么我们就可以认为操作成功的那个线程获得了该方法的锁
2,Redis分布式锁
主要通过redis的存值取值进行判断的,根据返回的参数判断是否能拿到锁
3,Zookeeper分布式锁
利用Zookeeper的顺序临时节点,来实现分布式锁和等待队列。Zookeeper设计的初衷,就是为了实现分布式锁服务的。
三,SpringBoot项目中的Redis分布式锁
1,引入相关的依赖
首先你的springboot项目是需要正常的能够跑通的,然后在你的主pom文件引入redis的相关依赖
<!--springboot 集成reids-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
2,redis的分布锁的原理
一般情况像这种经常用到的代码,单独抽一个Redis工具类出来,方