IT虾米网

分布式锁的应用

luoye 2022年06月12日 架构师 313 0

一 场景分析

在高并发情况下,即使对每一个 Tomcat 加了锁,也解决不了多个线程同时访问 Mysql 的问题,此时需要加一把分布式锁,在同一时刻只有一个 Tomcat 去访问 Mysql。

二 解决方案

1 使用 redisson 去解决

<dependency>     
    <groupId>org.redisson</groupId> 
    <artifactId>redisson</artifactId>     
    <version>3.11.1</version> 
</dependency>

2 代码参考

上面这段代码还是存在问题,如果第1个线程还没些写缓存,第2个线程就已经开始从缓存中获取数据了,那么第2个线程获取到的数据将是空,可使用下面代码进行优化。

如果第1个线程没有执行完,第2个线程就一直处于休眠,然后从 redis 获取数据的循环过程中,直到第2个线程获取到数据为止。

3 博客参考

Redisson基本用法 - 废物大师兄 - 博客园


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

单体架构的开发和架构问题