4 回答

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊
誠(chéng)邀。
如果你不想或者不愿意將redis引入到phpcms中。
我沒(méi)有對(duì)phpcms進(jìn)行過(guò)二次開(kāi)發(fā),但是你可以在sql中直接進(jìn)行相加,并非使用代碼去實(shí)現(xiàn)相加
update student set score=score+1 where id = 1
這樣就避免了投票不準(zhǔn)確
如果有時(shí)間可以使用redis或者隊(duì)列去實(shí)現(xiàn)這個(gè)功能。

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊
如果只是保證數(shù)據(jù)正常, 那可以事務(wù)加排它鎖來(lái)搞.
按理說(shuō)會(huì)先存到redis里面, 投票結(jié)束了才寫(xiě)入數(shù)據(jù)庫(kù)

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊
簡(jiǎn)單點(diǎn)就直接MySQL上鎖,但是這樣性能會(huì)低很多。
可以利用redis,讀也從redis讀,更新也是更新redis里(incr操作),
開(kāi)個(gè)任務(wù)等到投票結(jié)束,把緩存中投票數(shù)寫(xiě)入到MySQL中。

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊
看你的并發(fā)有多高、服務(wù)器性能有多好了。
簡(jiǎn)單來(lái)講,有幾點(diǎn)可以處理你的問(wèn)題。
使用
redis
列表記錄每個(gè)人的投票,異步去處理數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)加鎖,不過(guò)在高并發(fā)(如只有一臺(tái)低檔服務(wù)器+一萬(wàn)個(gè)人
3s
內(nèi)同時(shí)訪問(wèn))時(shí)能不能扛得住要看信仰。優(yōu)化你的表設(shè)計(jì),這張表盡量簡(jiǎn)單一些,選擇適當(dāng)?shù)氖聞?wù)隔離級(jí)別。
服務(wù)器物理機(jī)換成硬盤(pán)讀寫(xiě)性能更優(yōu)的。
- 4 回答
- 0 關(guān)注
- 368 瀏覽
添加回答
舉報(bào)