怎麼處理分發卡號的問題

來源:互聯網
上載者:User
我做的一個活動,是抽獎之後向中獎使用者分發卡號,卡號是已經拿到手放到db裡;
當使用者中獎後完善資料去擷取卡密時:首先判斷使用狀態,得到卡號,再修改卡號狀態。

在這個擷取卡號的過程中,如果有高並發的情況,怎麼處理合理?

表是用的innodb引擎,在擷取卡號的時候判斷未使用的 也無法根據主鍵來行鎖,導致整個表鎖。

回複內容:

我做的一個活動,是抽獎之後向中獎使用者分發卡號,卡號是已經拿到手放到db裡;
當使用者中獎後完善資料去擷取卡密時:首先判斷使用狀態,得到卡號,再修改卡號狀態。

在這個擷取卡號的過程中,如果有高並發的情況,怎麼處理合理?

表是用的innodb引擎,在擷取卡號的時候判斷未使用的 也無法根據主鍵來行鎖,導致整個表鎖。

  1. MySQL innodb引擎利用交易回復功能,一旦有某條sql操作失敗,則復原。

  2. 利用隊列,減輕商務邏輯伺服器的負載,避免高並髮帶來的問題。

把未使用的卡號放在Redis的Queue裡,擷取一張就pop一張

你可以不給他卡號,這樣是最省事的辦法。中獎使用者肯定有記錄吧?發獎有狀態吧?使用者資料完善後變更一下發獎狀態,然後告訴使用者今天淩晨發獎就行了。然後設一個cron-job,到時候分一下肯定不會發重了。而且這麼搞中獎的人至少還要再訪問一次你的網站,省的有人領完獎就再也不來了。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.