springboot單機秒殺之queue佇列

2022-02-20 16:34:23 字數 1401 閱讀 8038

一:

queue佇列,類似水管,水從入口進從水龍頭出,水龍頭要一直著水就會出來,沒有水就會等水出來。

所以我們用到兩個方法,

新增和取值。

add        增加乙個元索                     如果佇列已滿,則丟擲乙個iiiegaislabeepeplian異常

put 新增乙個元素 如果佇列滿,則阻塞

因為我們是秒殺,我們指定佇列長度後不需要它阻塞。佇列長度就是請求的成功數。

poll         移除並返問佇列頭部的元素    如果隊列為空,則返回null

remove   移除並返回佇列頭部的元素 如果隊列為空,則丟擲乙個nosuchelementexception異常

take 移除並返回佇列頭部的元素 如果隊列為空,則阻塞

我們用take一直阻塞。

2:

/*

* * 佇列工具類

* * @author jiang */

public

class

queueutil

catch

(exception e)

}public

static optionaltake()

catch

(interruptedexception e)

return

optional.ofnullable(killid);

}

/startkill2")

public

r startkill2(string killid)

return

r.error();

}

**

*專案啟動時載入

*/@component

@slf4j

public

class

@autowired

private

iseckillservice seckillservice;

@override

public

void

log.info(

"專案初始化載入");

while (true

) }

}

@override

@transactional(rollbackfor = exception.class

)

public

r startkill(string killid)

return r.error("

沒有了!");

}

springboot 限時秒殺

redisdao 來控制秒殺物件是否放入快取中 repository public class redisdao private runtimeschemaschema runtimeschema.createfrom seckill.class public seckill getseckill ...

SpringBoot整合Redis(單機 集群)

前面redis弄了那麼多,就是為了在專案中使用.那這裡,就分別來看一下,單機版和集群版在springboot中的使用吧.在裡面,我會同時貼出jedis版,作為比較.1.pom.xml org.springframework.boot spring boot starter data redis 1....

秒殺系統 mysql 秒殺系統之資料庫

秒殺系統的資料庫中的庫存加減操作是最為關鍵的點。12年天貓雙十一的超賣事件,對平台的負面影響是非常巨大的。資料庫裡做庫存扣減,簡單的可以用以下sql來說明 update stock table set inventory inventory 1 where item id xx and invent...