根據(jù)時(shí)間段制作 mysql 唯一索引
用戶希望每小時(shí)限制用戶只能向數(shù)據(jù)庫(kù)插入一條數(shù)據(jù)。例如,當(dāng)用戶在 10:15 插入數(shù)據(jù)后,在 10:15 至 11:15 之間不能再插入數(shù)據(jù)。為了避免因接口并發(fā)請(qǐng)求導(dǎo)致多個(gè)數(shù)據(jù)在 10:15 至 11:15 時(shí)間段內(nèi)入庫(kù),用戶希望使用唯一索引來(lái)實(shí)現(xiàn)。
解決方案
遺憾的是,使用數(shù)據(jù)庫(kù)的角度難以直接解決此問(wèn)題,因?yàn)闀r(shí)間點(diǎn)是可變的。但是,可以采用以下兩種方法:
- 使用 Redis 加鎖,獲取數(shù)據(jù)庫(kù)中的最大時(shí)間。
- 如果 Redis 中沒(méi)有最大時(shí)間,則從數(shù)據(jù)庫(kù)中獲取。
- 將最大時(shí)間比較后更新并保存到 Redis 中,以便下次使用。
2. 使用數(shù)據(jù)庫(kù)鎖(頻率不高)
- 使用數(shù)據(jù)庫(kù)鎖。
- 每當(dāng)要插入數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)查詢中的最大時(shí)間。
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載。
THE END