使用redis本身的原子性操作庫儲存。
// redis會返回操作之后的結果,這個過程是原子性的Long currStock = redisTemplate.opsForHash().increment("key", "stock", -1);if (currStock < 0) { // 說明庫存已經扣減完了。// 業務異常。log.error("[搶購下單] 無庫存");} else {// 生成訂單// 發布訂單創建成功事件// 構建響應}
Long currStock = redisTemplate.opsForHash().increment("key", "stock", -1);
if (currStock < 0) { // 說明庫存已經扣減完了。
// 業務異常。
log.error("[搶購下單] 無庫存");
} else {
// 生成訂單
// 發布訂單創建成功事件
// 構建響應
}
億速云公眾號
手機網站二維碼
Copyright ? Yisu Cloud Ltd. All Rights Reserved. 2018 版權所有
廣州億速云計算有限公司粵ICP備17096448號-1 粵公網安備 44010402001142號增值電信業務經營許可證編號:B1-20181529