分布式锁与秒杀

分布式锁与秒杀

  • [1. 分布式锁](#1. 分布式锁)
    • [1.1 常用Redis分布式锁方案三:使用Lua脚本(包含SETNX + EXPIRE两条指令)](#1.1 常用Redis分布式锁方案三:使用Lua脚本(包含SETNX + EXPIRE两条指令))
  • 秒杀

1. 分布式锁

https://www.cnblogs.com/shoshana-kong/p/17519673.html

1.1 常用Redis分布式锁方案三:使用Lua脚本(包含SETNX + EXPIRE两条指令)

实际上,我们还可以使用Lua脚本来保证原子性(包含setnx和expire两条指令),lua脚本如下:

java 复制代码
if redis.call('setnx',KEYS[1],ARGV[1]) == 1 then
   redis.call('expire',KEYS[1],ARGV[2])
else
   return 0
end;

加锁代码如下:

java 复制代码
String lua_scripts = "if redis.call('setnx',KEYS[1],ARGV[1]) == 1 then" +
            " redis.call('expire',KEYS[1],ARGV[2]) return 1 else return 0 end";   
Object result = jedis.eval(lua_scripts, Collections.singletonList(key_resource_id), Collections.singletonList(values));
//判断是否成功
return result.equals(1L);

秒杀

https://zhuanlan.zhihu.com/p/651992240

相关推荐
庞轩px34 分钟前
致远互联实习复盘:一条SQL替代300次循环查询,组织架构选择器从5秒降到300毫秒
java·sql·mysql·mybatis·实习经历·n+1问题·join联表查询
vooy pktc34 分钟前
Spring Security 官网文档学习
java·学习·spring
钰衡大师38 分钟前
Activiti 7 工作流技术文档
java·数据库·spring boot
dvjr cloi1 小时前
Spring Framework 中文官方文档
java·后端·spring
研究点啥好呢1 小时前
滴滴Go后端开发工程师面试题精选:10道高频考题+答案解析
java·开发语言·golang
ictI CABL1 小时前
SpringBoot3.3.0集成Knife4j4.5.0实战
java
傻瓜搬砖人1 小时前
SpringMVC的请求
java·前端·javascript·spring
亚历克斯神1 小时前
Java 开发者 2026 成长路线图:从初级到架构师
java·spring·微服务
佛系彭哥1 小时前
用飞算JavaAI做项目:在线图书借阅平台设计与实现
java·飞算javaai炫技赛
亚历克斯神1 小时前
Java 代码质量保障:静态分析与代码审查实践
java·spring·微服务