分布式锁与秒杀

分布式锁与秒杀

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

相关推荐
毕设源码-朱学姐10 小时前
【开题答辩全过程】以 基于SSM的航班管理系统的设计与实现为例,包含答辩的问题和答案
java
indexsunny10 小时前
互联网大厂Java求职面试实战:Spring Boot、微服务与Redis缓存技术解析
java·spring boot·redis·微服务·面试·电商·技术栈
程序员小白条10 小时前
面试 Java 基础八股文十问十答第二十一期
java·开发语言·数据库·面试·职场和发展
fanruitian10 小时前
k8s pv pvc 持久化存储
java·linux·kubernetes
哪里不会点哪里.10 小时前
Spring MVC 四种核心传参形式详解
java·spring·mvc
Anastasiozzzz10 小时前
常见限流算法--【令牌桶】【漏桶】【固定窗口】【滑动窗口】
java·redis·后端·算法·面试
马尔代夫哈哈哈10 小时前
Spring Mvc(二)
java·spring boot·spring·servlet·java-ee
橙露10 小时前
C语言执行四大流程详解:从源文件到可执行程序的完整生命周期
java·c语言·开发语言
啊阿狸不会拉杆10 小时前
《计算机操作系统》第六章-输入输出系统
java·开发语言·c++·人工智能·嵌入式硬件·os·计算机操作系统
风筝在晴天搁浅10 小时前
hot100 104.二叉树的最大深度
java·算法