springboot使用lock4j实现并发控制
一般情况下,我们使用乐观锁来处理并发超发的情况,但是,乐观锁在某些情况下,并不能彻底解决超发情况,于是只能上悲观锁(synchroized, 独占线程),特别是在分布式的情况下分布试锁就更为常见了。
下以使用一种基于redis的分布试锁来实现并发控制。
pom.xml增加:
<!--若使用redisson作为分布式锁底层,则需要引入--> <dependency> <groupId>com.baomidou</groupId> <artifactId>lock4j-redisson-spring-boot-starter</artifactId> <version>2.2.2</version> </dependency>
application.yml配置:
spring: redis: host: hk.peos.cn port: 6379
示例代码:
@Transactional @Lock4j @Override publicResult add(ErrorLog errorLog){ int count =this.count(); if(count >50){ returnResult.error(); } int flag = baseMapper.insert(errorLog); return flag >0?Result.success():Result.error(); }
JMETER并发测试:
数据库数量(符合预期):
官方地址:
https://github.com/baomidou/lock4j
============ 欢迎各位老板打赏~ ===========
与本文相关的文章
- · springboot全局增加sentinel
- · Springboot整合Swagger常用注解
- · swagger隐藏authentication参数
- · Spring Security 中的自定义PreAuthorize 注解
- · JACKSON和FASTJSON处理返回JSON数据中为NULL字段不显示
- · 将数据从mysql迁移到clickhouse
- · springboot登录失败3次后需要验证码的设计及实现
- · Mybatis —— 解决单引号带来的sql注入问题
- · Springboot整合Nacos(动态改变数据库连接参数)
- · springboot访问静态资源404 —-idea设置问题
- · mybatis 乐观锁解决并发并回滚
- · 让Windows Server 2008 + IIS 7+ ASP.NET 支持10万并发请求