分布式锁与秒杀

分布式锁与秒杀

  • [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

相关推荐
星晨羽13 小时前
java通过共享目录协议下载文件到本地
java
YuanDaima204813 小时前
云计算基础与容器技术演进
java·服务器·人工智能·python·深度学习·云计算·个人开发
java1234_小锋13 小时前
SpringBoot可以同时处理多少请求?
java·spring boot·后端
JAVA面经实录91713 小时前
原码反码补码编码架构与进制底层设计思想
java·架构
wangl_9213 小时前
初探 C# 15 的 Union Types
java·开发语言·算法·c#·.net·.net core
happymaker062613 小时前
Spring学习日记——DAY06(事务管理)
java·学习·spring
兰令水13 小时前
topcode【随机算法题】【2026.5.14打卡-java版本】
java·算法·leetcode
雪度娃娃13 小时前
结构型设计模式——代理模式
java·c++·设计模式·系统安全·代理模式
万邦科技Lafite13 小时前
京东商品详情 API 接口全面讲解
java·数据库·redis·api·电商开放平台
折哥的程序人生 · 物流技术专研14 小时前
Java面试85题图解版 · 全系列总目录
java·开发语言·后端·面试·职场和发展