代码拉取完成,页面将自动刷新
采用Reids实现的一个简单分布式锁 【描述】:Reids如何做实现一个分布式锁
SpringBoot简单的一个模拟减库存接口
upstream tomcatserver{
server 192.168.48.150:8080 weight=1;
server 192.168.48.150:8090 weight=1;
}
server{
location / {
proxy_pass http://tomcatserver;
proxy_redirect default;
}
}
3、 安装Redis,配置Boot的配置文件
int number = jedis.get("number"));
if(number>0){
int realNumber = number - 1;
jedis.setset("number",realNumber+"");
System.out.println("减库存成功,剩余:"+realNumber);
}else{
System.out.println("减库存失败,库存不足");
}
1、不加锁,多个请同时读,超卖了?
2、synchrized JVM级别的锁, 分布式不起作用?
3、用分布式锁,利用redis的setnx命令(如果有返回false,什么都不做,没有才set)
如果执行业务代码异常,无法释放锁? ——try finally可以解决
执行业务代码挂了,执行不了Finally? ——超时时间可以解决
线程2可以删除线程1的锁 ——uuID一定程度可以解决
判断了UUID,这个时候线程1卡顿,锁超时了,线程2加锁了,线程1还是会删除2的锁
锁续命
了解到Redisson , 特别好用。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。