日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java redis 商品秒杀_redis编写lua脚本实现商品秒杀

發布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java redis 商品秒杀_redis编写lua脚本实现商品秒杀 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

編寫lua腳本

--是否秒殺

local hasBuy = redis.call('sismember',KEYS[1],ARGV[1])

if hasBuy~=0 then

return 0;

end

--校驗庫存

for goodsIndex=2,#KEYS do

local goodStock = redis.call('get',KEYS[goodsIndex])

if tonumber(goodStock) < tonumber(ARGV[goodsIndex]) then

return 2;

end

end

--扣庫存

for goodsIndex=2,#KEYS do

redis.call('decrby',KEYS[goodsIndex],ARGV[goodsIndex])

end

--搶單成功

redis.call('sadd',KEYS[1],ARGV[1])

return 1

測試用例

Jedis jedis = jedisPool.getResource();

jedis.select(2);

String luaStr = "local hasBuy = redis.call('sismember',KEYS[1],ARGV[1])\n" +

"if hasBuy~=0 then\n" +

"return 0;\n" +

"end \n"+

"for goodsIndex=2,#KEYS do\n" +

" local goodStock = redis.call('get',KEYS[goodsIndex])\n" +

" local redisStock=ARGV[goodsIndex]\n"+

" if tonumber(goodStock) < tonumber(redisStock) then\n" +

" return 2;\n" +

" end\n" +

"end\n"+

"for goodsIndex=2,#KEYS do\n" +

"redis.call('decrby',KEYS[goodsIndex],ARGV[goodsIndex])\n" +

"end\n"+

"redis.call('sadd',KEYS[1],ARGV[1])\n" +

"return 1";

List keys = new ArrayList<>();

keys.add("user_id");

//商品ID

keys.add("1001");

keys.add("1002");

keys.add("1003");

List values = new ArrayList<>();

values.add(userId);

//商品購買量

values.add(goodsNums.get(0));

values.add(goodsNums.get(1));

values.add(goodsNums.get(2));

Object result = jedis.eval(luaStr, keys,values);

System.out.println("redis返回 result: " + result);

if (jedis != null) {

jedis.close();

}

測試數據的話,自己手動加幾條

redis.set(1001,100)

redis.set(1002,100)

redis.set(1003,100)

已經秒殺的用戶返回 0

秒殺成功返回 1

庫存不足返回 2

參考:

https://blog.csdn.net/u010800970/article/details/81834965

https://blog.csdn.net/zhurhyme/article/details/79046470

總結

以上是生活随笔為你收集整理的java redis 商品秒杀_redis编写lua脚本实现商品秒杀的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。