今天就跟大家聊聊有關(guān)Java使用Redis實(shí)現(xiàn)一個(gè)秒殺功能,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
秒殺功能
秒殺場(chǎng)景現(xiàn)在已經(jīng)非常常見(jiàn)了,各種電商平臺(tái)都有秒殺的產(chǎn)品,接下來(lái)我們模擬一個(gè)秒殺的項(xiàng)目,最終能夠確保高并發(fā)下的線程安全。界面比較簡(jiǎn)單,但是功能基本實(shí)現(xiàn)。
界面
點(diǎn)擊“秒殺點(diǎn)我”按鈕后臺(tái)就會(huì)輸出秒殺結(jié)果。
第一版
使用Redis緩存數(shù)據(jù)庫(kù),使用一個(gè)key-value存儲(chǔ)秒殺商品數(shù)量,使用set集合存儲(chǔ)秒殺成功的用戶(hù)。我們以商品0101為示例,設(shè)置商品的初始數(shù)量為200件。不考慮并發(fā)問(wèn)題,實(shí)現(xiàn)功能。
html、jsp、servlet文件不重要省略。
package com.redis.secondskill; import java.util.List; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.Transaction; public class SS0 { public static boolean doSecKill(String uid,String prodid) { JedisPool jedisPool = JedisPollTool.getInstance(); Jedis jedis = jedisPool.getResource(); String productCountStr = "sec:"+prodid+":count"; String productUserStr = "sec:"+prodid+":user"; String productCount = jedis.get(productCountStr); if(null == productCount) { System.out.println("秒殺還沒(méi)有開(kāi)始"); JedisPollTool.distroy(jedisPool, jedis); return false; } if(jedis.sismember(productUserStr, uid)) { System.out.println(uid + "用戶(hù)已經(jīng)秒殺成功"); JedisPollTool.distroy(jedisPool, jedis); return false; } int prodCount = Integer.parseInt(productCount); if(prodCount <= 0) { System.out.println("秒殺結(jié)束"); JedisPollTool.distroy(jedisPool, jedis); return false; } jedis.decr(productCountStr); jedis.sadd(productUserStr, uid); JedisPollTool.distroy(jedisPool, jedis); System.out.println(uid + "秒殺成功"); return true; } }
網(wǎng)頁(yè)標(biāo)題:Java使用Redis實(shí)現(xiàn)一個(gè)秒殺功能-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://aaarwkj.com/article28/godjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、用戶(hù)體驗(yàn)、網(wǎng)站策劃、App設(shè)計(jì)、手機(jī)網(wǎng)站建設(shè)、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容