Redis分布式锁学习
Redis分布式锁学习
锁的重要性:日常针对共享资源使用时要注意加锁、否则高并发情况下,会引起业务逻辑错误,
先看如下代码示例 1-1:。
@GetMapping("/testRedissonGet")
public R testRedissonGet(){
String sqlStr = "update sys_serial_number set CURVALUE = CURVALUE+1 where ID='040d01d8a97a49ee8070df7946383cfb'";
commonSqlDao.sqlUpdate(sqlStr);
SysSerialNumberDo sysSerialNumberDo = sysSerialNumberService.getById("040d01d8a97a49ee8070df7946383cfb");
System.out.println("CURVALUE:"+sysSerialNumberDo.getCurvalue());
return R.ok(sysSerialNumberDo.getCurvalue());
}
1-1 代码示例是一个常见取序列号的代码,此代码在正常低并发测试很难发现问题,但如果使用高并发测试就会发现问题,可采用ab实现压力测试,直接在cmd窗口输入如下命令:
ab -n 50 -c 30 http://localhost:9780/testApiAuth/testRedissonGet
上述命令标识请求50次,并发30次
注意:
ab全称为:apache bench
ab是Apache超文本传输协议(HTTP)的性能测试工具。其设计意图是描绘当前所安装的Apache的执行性能,主要是显示你安装的Apache每秒可以处理多少个请求。
ab是apache自带的压力测试工具。ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。
安装
下载地址:https://www.apachehaus.com/cgi-bin/download.plx
可看到控制台日志如下:
INFO: log base dir