亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在高并發下,http請求返回絕對的當前請求是第幾個請求?

如何在高并發下,http請求返回絕對的當前請求是第幾個請求?

Helenr 2019-03-14 18:19:06
比如,我第一次訪問請求返回json:{"n": 1}我第100次訪問請求返回json:{"n": 100}傳統的寫數據庫,再查數據庫返回,在并發大時好像不能保證,我應該怎么辦?這應該是最簡化了的問題了
查看完整描述

6 回答

?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

最簡單的方法就是建個自增id主鍵的mysql表,然后每來一次請求就插一條記錄,再讀出這條記錄,讀出的id就是你要的值。

然后就可以根據id值來輕松處理高并發的場景了,比如【秒殺】就可用id小于300且能被6整除的規則認為秒殺成功;【抽獎】可以用能被100整除(百分之一概率)作為中獎等等。

如果自己實現也無非就是單線程死循環處理socket請求維護一個全局變量,不如用現成的mysql方便可靠。


查看完整回答
反對 回復 2019-04-23
?
慕田峪9158850

TA貢獻1794條經驗 獲得超8個贊

使用redis中的setnx(id),單線程保證每次加1,而且還是內存數據庫,速度超級快。


查看完整回答
反對 回復 2019-04-23
?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

  • 讀操作:使用緩存

  • 寫操作:使用隊列異步寫入


查看完整回答
反對 回復 2019-04-23
?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

純粹Java的話,可以把計數器對象做成單例,通過filter攔截所有請求計算器加1(需要同步)。不知道你說的數據庫是什么意思,{n : 100},n是數據庫拿的?


查看完整回答
反對 回復 2019-04-23
  • 6 回答
  • 0 關注
  • 870 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號