3 回答

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊
可以用隊(duì)列消費(fèi)異步寫mysql。每次寫入redis后,發(fā)送一條消息到隊(duì)列中,消費(fèi)者獲取到消息后,通過(guò)redis獲取訂單信息,寫入mysql。
也可以設(shè)置一個(gè)定時(shí),幾分鐘跑一次,拉取一次redis中的幾分鐘內(nèi)新增的訂單,寫入mysql。不過(guò)這個(gè)就需要注意redis占用問(wèn)題,如果設(shè)計(jì)有缺陷可能會(huì)阻塞redis。
同時(shí)也要做好redis的持久化,免得redis崩潰后沒(méi)有持久化的數(shù)據(jù)丟失導(dǎo)致訂單對(duì)不上。

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
把庫(kù)存寫入隊(duì)列,每次請(qǐng)求就從隊(duì)列里取值,如果有值就按正常請(qǐng)求處理。比如設(shè)置了100的庫(kù)存,最終到數(shù)據(jù)庫(kù)的就只有100個(gè)請(qǐng)求。
100個(gè)請(qǐng)求不算大并發(fā) 當(dāng)一個(gè)請(qǐng)求過(guò)來(lái)時(shí), php-fpm 就創(chuàng)建一個(gè)進(jìn)程,專門接待這個(gè)請(qǐng)求,直到處理完這個(gè)請(qǐng)求。php-fpm 能同時(shí)派出很多人(進(jìn)程),互不干擾。
服務(wù)器處理器和內(nèi)存越大,php-fpm就能派出越多的人。這個(gè)不需要php程序員操心。當(dāng)然,處理器和內(nèi)存一定的情況先,如果每個(gè)人的工作量越小(程序設(shè)計(jì)的越優(yōu)),php-fpm就能同時(shí)派出更多的人。

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊
1.使用redis是為了能快速的判斷被秒殺的商品是否還有庫(kù)存.
2.通過(guò)判斷redis數(shù)據(jù)的判斷結(jié)果進(jìn)行限流,減少服務(wù)器壓力.
3.redis持久化到數(shù)據(jù)庫(kù)的數(shù)據(jù)量很小,只要正常操作數(shù)據(jù)庫(kù)就可以了.
添加回答
舉報(bào)