分布式锁与秒杀

分布式锁与秒杀

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

相关推荐
yaoxin5211237 分钟前
289. Java Stream API - 从字符串的字符创建 Stream
java·开发语言
浮游本尊14 分钟前
Java学习第35天 - 分布式系统深入与大数据处理
java
2301_7806698624 分钟前
Set集合、HashSet集合的底层原理
java
你曾经是少年35 分钟前
Java 关键字
java
海南java第二人38 分钟前
SpringBoot启动流程深度解析:从入口到容器就绪的完整机制
java·开发语言
问今域中40 分钟前
Spring Boot 请求参数绑定注解
java·spring boot·后端
星火开发设计42 分钟前
C++ queue 全面解析与实战指南
java·开发语言·数据结构·c++·学习·知识·队列
rgeshfgreh44 分钟前
Java+GeoTools+PostGIS高效求解对跖点
java
鱼跃鹰飞1 小时前
DDD中的防腐层
java·设计模式·架构
计算机程序设计小李同学1 小时前
婚纱摄影集成管理系统小程序
java·vue.js·spring boot·后端·微信小程序·小程序