填坑利器?Redis如何彌補(bǔ)傳統(tǒng)MySQL架構(gòu)的不足
傳統(tǒng)MySQL架構(gòu)難以滿足的現(xiàn)代應(yīng)用程序需求包括:
傳統(tǒng)數(shù)據(jù)庫的讀/寫速度對(duì)會(huì)話存儲(chǔ)等用例不友好;
引入新表或修改現(xiàn)有模式非常復(fù)雜,這也導(dǎo)致了添加新功能和應(yīng)用程序會(huì)有困難;
傳統(tǒng)數(shù)據(jù)庫會(huì)受到每秒可執(zhí)行操作的數(shù)量和并發(fā)連接數(shù)的限制,所以在數(shù)據(jù)庫實(shí)例增多的情況下,基礎(chǔ)架構(gòu)和維護(hù)成本也會(huì)增加。
Redis和傳統(tǒng)數(shù)據(jù)庫結(jié)合會(huì)產(chǎn)生哪些化學(xué)反應(yīng)呢?首先,如果應(yīng)用程序的數(shù)據(jù)是存儲(chǔ)在MySQL或其它關(guān)系型數(shù)據(jù)庫中,那么Redis可以作為前端數(shù)據(jù)庫處于應(yīng)用程序和MySQL之間;其次,還可以利用Redis來設(shè)計(jì)旁路讀出式和寫通式緩存解決方案、會(huì)話存儲(chǔ)和速率限制器,這樣可以提高性能、加速創(chuàng)新,以更少的資源擴(kuò)展來獲得***的用戶體驗(yàn)。
Redis作為“參與型系統(tǒng)”
Redis內(nèi)存中鍵值數(shù)據(jù)存儲(chǔ)可為用戶提供低延遲響應(yīng),其內(nèi)置的數(shù)據(jù)結(jié)構(gòu)(例如Lists、Hashes、 Sets、Sorted Sets、Bitmaps、Hyperloglog和Geospatial Indices),較于關(guān)系型數(shù)據(jù)庫能夠更有效地執(zhí)行某些數(shù)據(jù)操作。
所以,我們建議在數(shù)據(jù)訪問層后使用Redis作為“參與型系統(tǒng)”來存儲(chǔ)熱數(shù)據(jù),同時(shí)將MySQL指定為“記錄系統(tǒng)”。
另外,Redis如果應(yīng)用于以下用例,那么就可以規(guī)避掉很多可能在原有應(yīng)用程序、數(shù)據(jù)庫或網(wǎng)絡(luò)層中出現(xiàn)的瓶頸:
- 緩存:為內(nèi)存訪問提供一個(gè)分層模型,Redis中存儲(chǔ)應(yīng)用程序中常用、重復(fù)讀取的數(shù)據(jù)。緩存也可幫助應(yīng)用程序快速檢索數(shù)據(jù)并限制數(shù)據(jù)庫服務(wù)器上的負(fù)載。
- 會(huì)話存儲(chǔ):在所有交互式應(yīng)用程序中,服務(wù)器為每個(gè)活動(dòng)用戶維護(hù)一個(gè)唯一會(huì)話。相比于依賴MySQL等關(guān)系型數(shù)據(jù)庫來持久化會(huì)話數(shù)據(jù),Redis在具有足夠RAM大小的服務(wù)器上,單個(gè)集群就可以管理數(shù)千個(gè)會(huì)話。
- 實(shí)時(shí)分析:通過排行榜、儀表板、民意測(cè)驗(yàn)、消息、計(jì)數(shù)器和其他實(shí)時(shí)聚合器進(jìn)行的游戲或操作需要與最終用戶進(jìn)行持續(xù)的互動(dòng)和通信。而Redis強(qiáng)大、高效的數(shù)據(jù)結(jié)構(gòu)可以收集和處理數(shù)百萬個(gè)同時(shí)進(jìn)行的活動(dòng)或?qū)ο?,并將其發(fā)送到活動(dòng)用戶手中。
- 度量:Redis可以通過速率限制應(yīng)用程序在一定時(shí)間內(nèi)的調(diào)用次數(shù),幫助開發(fā)人員在高峰使用時(shí)間內(nèi)高效地管理傳統(tǒng)服務(wù)器上的負(fù)載。
當(dāng)然,除了上面的用例,Redis在消息代理、數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)和臨時(shí)數(shù)據(jù)存儲(chǔ)等用例中表現(xiàn)也很突出??偨Y(jié)一下就是Redis能更快地收集和獲取數(shù)據(jù)并反饋給終端用戶。再進(jìn)一步的話,Redis Enterprise提供高可用性、內(nèi)存復(fù)制、自動(dòng)伸縮和重新分片,以及基于前沿CRDT的分布式數(shù)據(jù)庫和內(nèi)置Redis模塊(如RediSearch、ReJSON、Rebloom和Redis Graph)。
借助于Redis,我們?cè)趥鹘y(tǒng)解決方案中也可以享受到“即時(shí)體驗(yàn)”,其在性能、靈活性和可擴(kuò)展性方面的優(yōu)勢(shì)值得我們嘗試!