使用Redis實現秒殺功能的簡單方法

2022-09-21 01:24:10 字數 785 閱讀 8277

設定資料庫事務www.cppcns.com的隔離級別為serializable(不可用)

serializable就是讓資料庫去序列化的去執行事務,乙個事務執行完才能去執行下乙個事務,效率太慢

在資料表上設定樂觀鎖欄位,例如設定版本號(version)

不同事務在執行更新操作時,需要先判斷一下版本號是否已被修改

**實現樂觀鎖流程

1.1. 什麼表需要設定樂觀鎖

出現同時修改同一條記錄的業務,相應的資料表要設定樂觀鎖

不會出現同時修改同一記錄的資料庫,就不需要設定樂觀鎖

為了保證事務的一致性,在開啟事務之前必須要用watch命令監視要操作的記錄

redis > watch kill_num kill_user

使用multi命令開啟乙個事務

redis > multi

開啟事務後的所有操作都不會立即執行,只有執行exec命令的時候才會批處理執行

redis > decr kill_num

www.cppcns.comredis > rpush kill_user 10086

redis > exec

spring-boot 引入 redis 依賴

org.springframework.boot

spring-boot-starter-data-redis

實現**

@autowired

private stringredistemplate redistemplate;

public void kill()

}

Redis事務和實現秒殺功能的實現

今天帶著學生學習了redis的事務功能,redis的事務與傳統的關係型資料庫 如mysql 有所不同,redis的事務不能回滾。redis中使用multi exec discard watch unwatch等命令來操作事務。例如 multi ok incr aaa queued incr bbb ...

Redis事務和實現秒殺功能的實現

今天帶著學生學習了redis的事務功能,redis的事務與傳統的關係型資料庫 如mysql 有所不同,redis的事務不能回滾。redis中使用multi exec discard watch unwatch等命令來操作事務。例如 multi ok incr aaa queued incr bbb ...

redis使用watch完成秒殺搶購功能

redis使用watch完成秒殺搶購功能 使用redis中兩個key完成秒殺搶購功能,mywatchkey用於儲存搶購數量和mywatchlist使用者儲存搶購列表。它的優點如下 1.首先選用記憶體資料庫來搶購速度極快。2.速度快併發自然沒不是問題。3.使用悲觀鎖,會迅速增加系統資源。4.比隊列強的...