分布式锁与秒杀

分布式锁与秒杀

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

相关推荐
覆东流20 分钟前
Java开发环境搭建
java·开发语言·后端
阿洛学长23 分钟前
VMware安装虚拟机教程(超详细)
java·linux·开发语言
coder Ethan27 分钟前
Spring AI 入门:(3)快速搭建一个简单的问答助手
java·人工智能·spring
屋外雨大,惊蛰出没29 分钟前
starter的创建与引用
java·stater
小同志0031 分钟前
Spring Boot ⽇志概述(简单了解)
java·java-ee·日志
小马爱打代码35 分钟前
SpringBoot + 延迟消息 + 时间轮:订单超时、优惠券过期等场景的高效实现方案
java·spring boot·后端
就叫_这个吧39 分钟前
Java普通类、抽象类、接口的应用和区别
java·开发语言
梅孔立42 分钟前
解决Nginx缓存不写入响应体问题:浏览器强制不缓存配置教程
java·开发语言·nginx·spring
方也_arkling1 小时前
【Java-Day18】API篇-Arrays
java·算法·排序算法
风味蘑菇干1 小时前
数据流:
java