php redis發紅包

來源:互聯網
上載者:User
需求是這樣的:

現在公司定期發紅包, 每個禮拜1次

後台每一期會設定
比如說 1元的紅包10個 2元的100個 88元的10個

每一期的紅包有一個總數目 比如現在我說的是第3期搶紅包 總數是 142個
下面是mysql儲存的設定紅包

紅包金額 數量   實際完成數量10        2         12         100       10088        10        320        30        22

目前做的流程是這樣的:
使用者開啟這個頁面,然後開始設定memcache鎖 ,直到程式處理結束(解鎖) 。因為紅包牽扯到進行打款,和結合
那邊什麼時候返回成功資料這個時間大概是3s之內
程式裡面的邏輯是這樣的
1:判斷使用者是否有資格比如帳號是否正確
2:使用者是否搶過紅包
3:紅包數量是否達到
4:隨機分配一個紅包(暫時不考慮機率性的)
5:修改mysql資料庫的那個紅包實際完成數量+1

另外我也想到使用redis的隊列使用具體這樣:
1:後台發布紅包的時候設定一個總數
set red_money_count 142
使用者搶紅包的時候放到隊列裡面用rplush進行設定 (原則是先進先出的原則)
然後在進行分配一個紅包,對應的那個紅包的完成數量+1 ,不過在這期間肯定要和進行互連打款 這個比較耗時。。
現在就是要解決這個耗時問題。。

備忘:目前已經採用memcache枷鎖實現但是還要使用者進行排隊, 必須1個個處理完 使用者體驗一點都不好。。。。。

回複內容:

需求是這樣的:

現在公司定期發紅包, 每個禮拜1次

後台每一期會設定
比如說 1元的紅包10個 2元的100個 88元的10個

每一期的紅包有一個總數目 比如現在我說的是第3期搶紅包 總數是 142個
下面是mysql儲存的設定紅包

紅包金額 數量   實際完成數量10        2         12         100       10088        10        320        30        22

目前做的流程是這樣的:
使用者開啟這個頁面,然後開始設定memcache鎖 ,直到程式處理結束(解鎖) 。因為紅包牽扯到進行打款,和結合
那邊什麼時候返回成功資料這個時間大概是3s之內
程式裡面的邏輯是這樣的
1:判斷使用者是否有資格比如帳號是否正確
2:使用者是否搶過紅包
3:紅包數量是否達到
4:隨機分配一個紅包(暫時不考慮機率性的)
5:修改mysql資料庫的那個紅包實際完成數量+1

另外我也想到使用redis的隊列使用具體這樣:
1:後台發布紅包的時候設定一個總數
set red_money_count 142
使用者搶紅包的時候放到隊列裡面用rplush進行設定 (原則是先進先出的原則)
然後在進行分配一個紅包,對應的那個紅包的完成數量+1 ,不過在這期間肯定要和進行互連打款 這個比較耗時。。
現在就是要解決這個耗時問題。。

備忘:目前已經採用memcache枷鎖實現但是還要使用者進行排隊, 必須1個個處理完 使用者體驗一點都不好。。。。。

直接用mysql進行發紅包不就好了,搶到紅包的記錄在mysql裡面,然後根據mysql記錄進行打款。mysql裡面標記下搶到紅包,跟搶到紅包並且已經付款就好了。這麼幾個紅包要啥memcache,redis。

和進行互連打款,返回成功資料這個時間大概是3s之內。
這個時間不是你寫代碼能夠提高的。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.