《redis解決高并發(fā)問(wèn)題,如商品秒殺》要點(diǎn):
本文介紹了redis解決高并發(fā)問(wèn)題,如商品秒殺,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
redis真的是一個(gè)很好的技術(shù),它可以很好的在一定程度上辦理網(wǎng)站一瞬間的并發(fā)量,例如商品搶購(gòu)秒殺等活動(dòng)...
redis之所以能解決高并發(fā)的原因是它可以直接拜訪內(nèi)存,而以往我們用的是數(shù)據(jù)庫(kù)(硬盤),提高了拜訪效率,解決了數(shù)據(jù)庫(kù)服務(wù)器壓力.
為什么redis的地位越來(lái)越高,我們?yōu)楹尾贿x擇memcache,這是因?yàn)閙emcache只能存儲(chǔ)字符串,而redis存儲(chǔ)類型很豐富(例如有字符串、LIST、SET等),memcache每個(gè)值最大只能存儲(chǔ)1M,存儲(chǔ)資源非常有限,十分消耗內(nèi)存資源,而redis可以存儲(chǔ)1G,最重要的是memcache它不如redis平安,當(dāng)服務(wù)器發(fā)生故障或者意外關(guān)機(jī)等情況時(shí),redsi會(huì)把內(nèi)存中的數(shù)據(jù)備份到硬盤中,而memcache所存儲(chǔ)的東西全部丟失;這也說(shuō)明了memcache不適合做數(shù)據(jù)庫(kù)來(lái)用,可以用來(lái)做緩存.
下面用redis辦理瞬間秒殺活動(dòng)來(lái)說(shuō)明:
下面這個(gè)程序模擬了20w人一瞬間涌入這個(gè)頁(yè)面進(jìn)行秒殺,能夠秒殺成功的只有500人,我們把先進(jìn)來(lái)的用戶放入redis隊(duì)列中,當(dāng)隊(duì)列中的用戶達(dá)到500時(shí),后來(lái)用戶就轉(zhuǎn)到秒殺結(jié)束頁(yè)面.這里用隨機(jī)數(shù)來(lái)表示不同的用戶.
這里我們可以看到秒殺成功的第一個(gè)用戶的id是208522,秒殺成功的最后一個(gè)用戶是176260,參與秒殺人數(shù)總共是20w.(讓大家注意這些的原因是為了驗(yàn)證下面的準(zhǔn)確性).
接下來(lái)我們依次從隊(duì)列中把秒殺成功的500個(gè)用戶取出來(lái)并觀察第一個(gè)用戶和最后一個(gè)用戶是否跟之前的記錄值一樣
我們可以看到從秒殺成功隊(duì)列中依次取出的第一個(gè)用戶id是208522,最后一個(gè)用戶是176260,可以看出結(jié)果是很準(zhǔn)確的.
redis在辦理高并發(fā)這方面的能力是真的挺不錯(cuò)的.
歡迎參與《redis解決高并發(fā)問(wèn)題,如商品秒殺》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/9210.html