分布式锁与秒杀

分布式锁与秒杀

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

相关推荐
c++之路11 分钟前
装饰器模式(Decorator Pattern)
java·开发语言·装饰器模式
Alson_Code17 分钟前
Spring Ai Alibaba
java·人工智能·spring
计算机安禾17 分钟前
【c++面向对象编程】第5篇:类与对象(四):赋值运算符重载
java·前端·c++
AI人工智能+电脑小能手26 分钟前
【大白话说Java面试题 第45题】【JVM篇】第5题:JVM中,对象何时会进入老年代?
java·开发语言·jvm·后端·面试
luck_bor30 分钟前
使用接口定义规范,实现类完成具体逻辑
java·开发语言
Tsuki_tl30 分钟前
Thread类的基本用法干货总结
java·javase·线程中断·休眠·线程等待·thread类
likerhood34 分钟前
java的泛型(generics)详细讲解
java·开发语言
大龄码农-涵哥40 分钟前
Java 调用 LLM 全解析:ChatGPT、Claude、通义千问一网打尽
java·开发语言·chatgpt
小新同学^O^40 分钟前
简单学习 --> JVM
java·开发语言·python