分布式锁与秒杀

分布式锁与秒杀

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

相关推荐
皮卡祺q6 分钟前
【算法-0】背包问题(三维+二维)
java·javascript·算法
shinelord明30 分钟前
【云计算】k8sclient API 镜像操作 Java 类封装
java·kubernetes·云计算
invicinble30 分钟前
spring事务相关信息量的沉淀
java·后端·spring
basketball61635 分钟前
C++ 多态完全指南:同一个接口,千变万化的行为
java·开发语言·c++
KANGBboy1 小时前
java知识二(程序流程控制)
java·开发语言
Dicky-_-zhang1 小时前
JWT令牌安全实践详解
java·jvm
qq7422349841 小时前
全面深入的C#核心知识体系与编程实践精要——从语法基础到高级特性系统学习指南
java·算法·c#
萌新小码农‍1 小时前
Python的input函数
java·前端·python
NiceCloud喜云1 小时前
AutoClaw 接入自定义 Anthropic 端点:让 Kanban 工作流跑在自己的模型路由上
java·开发语言·c++·人工智能·python·eclipse·batch
马尔斯的蓝色1 小时前
[特殊字符] Java 集成 Elasticsearch 实战指南
java