Spring cloud项目扩展(三)项目集成redis分布式锁

​上一篇中,我们在springcloud项目中集成了redis,这一篇通过redis来实现分布式锁。锁的基本概念可以自行百度,最通俗的意思是,在一条路上安装一个门,这个门同时只允许一个线程通过,每个线程通过的时候都在这个门上加一把锁,线程结束解锁后才允许处理别的线程。springcloud项目一般都是采用多节点部署,当两个又互斥性的操作同时进行时,就需要加锁来保证数据的准确性,类似于数据的事务。通过锁保证read和write是一个原子性的操作,不允许在read和write的过程中有其他对数据的操作。话不多说,直接开始。

1,启动我们的redis,测试启动成功。

2,依旧以我们的example-service项目为例。创建lock包和实现包impl,并创建接口Lock和接口实现LockImpl,目录结构如图。

3,项目中引入jar包

4,写锁的接口。加锁,解锁和自旋锁。所谓的自旋锁就是再未获得锁的时候循环直到获取锁为止。

5,下面是对锁的实现。

6,在controller中创建两个方法用来测试。

7,使用postman创建两个请求进行测试。

8,看日志输出结果,证明锁的存在。

在写这个锁的时候遇到一些问题。在测试的时候发现,如果在单元测试中启动线程进行测试,则会报与redis server连接超时。网上解释说是由于springboot2.x 客户端使用的lettuce实现导致的。到最后依然没有解决这个问题。 使用dedisclient不会出现这个问题。代码和测试方式在example-web中有实现。

关注公众号:直立行走的程序猿

公众号回复springcloud获得git的源码下载地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值