我們專(zhuān)注於高端品牌網(wǎng)站創(chuàng)意設(shè)計(jì)與開(kāi)發(fā)
要Memcached還是要Redis?在構(gòu)建一款現(xiàn)代且由資料庫(kù)驅動(dòng)的Web應(yīng)用程式並希望使其擁有更為出色的性能表現(xiàn)時(shí),這個(gè)問(wèn)題總會(huì)時(shí)不時(shí)出現(xiàn)、並給每一位開(kāi)發(fā)人員帶來(lái)困擾。在考慮對(duì)應(yīng)用程式的性能表現(xiàn)進(jìn)行提升時(shí),緩存機(jī)制往往是解決問(wèn)題的重要起點(diǎn),而Memcached與Redis則經(jīng)常被作為初步方案來(lái)加以比較。
這兩(liǎng)套聲名顯赫的緩存引擎擁有著諸多相似之處,但它們同樣也具備大量顯著差異。作為二者當(dāng)中更年輕也更加靈活的方案,Redis被大部分技術(shù)人員視為首選目標(biāo)——但請別掉以輕心,不容忽視的重要例外情況也是客觀(guān)存在的。
兩(liǎng)者相似之處
讓我們先從二者的相似之處談起。Memcached與Redis都屬於內(nèi)存內(nèi)、鍵值數(shù)據(jù)存儲(chǔ)方案。它們都從屬於數(shù)據(jù)管理解決方案中的NoSQL家族,而且都基於同樣的鍵值數(shù)據(jù)模型。雙方都選擇將全部數(shù)據(jù)保存在內(nèi)存當(dāng)中,這自然也就讓它們成為非常理想的緩衝層實(shí)現(xiàn)方案。從性能表現(xiàn)的角度來(lái)看,兩(liǎng)類(lèi)數(shù)據(jù)存儲(chǔ)機(jī)制也具備諸多共通性,包括擁有幾乎相同的特徵(與指標(biāo))表現(xiàn)、而且高度關(guān)注工作負(fù)載的數(shù)據(jù)吞吐量與延遲狀況。
除了同為內(nèi)存內(nèi)鍵值數(shù)據(jù)存儲(chǔ)方案,Memcached與Redis還都是相當(dāng)成熟而且極具人氣的開(kāi)源項(xiàng)目。Memcached最初是由Brad Fitzpatrick於2003年開(kāi)發(fā)而成,當(dāng)時(shí)其直接服務(wù)對(duì)象為LiveJournal交友網(wǎng)站。在此之後,Memcached被重新用C語言進(jìn)行了編寫(xiě)(其最初實(shí)現(xiàn)方式為Perl語言)且投身於公共領(lǐng)域,並在這裡逐步發(fā)展為現(xiàn)代Web應(yīng)用程式的構(gòu)建基石。Memcached項(xiàng)目的當(dāng)前開(kāi)發(fā)工作主要關(guān)注其運(yùn)行穩(wěn)定性及優(yōu)化效果方面,而不再積極為其打造更多新型功能。
Redis則由Salvatore Sanfilippo於2009年創(chuàng)建,而且時(shí)至今日Sanfilippo仍然擔(dān)任著該項(xiàng)目的首席開(kāi)發(fā)者以及惟一維護(hù)者的角色。Redis有時(shí)候會(huì)被人們稱(chēng)為「強(qiáng)化版的Memcached」。考慮到從Memcached身上吸取並借鑑到大量寶貴的經(jīng)驗(yàn)教訓(xùn),這樣的評(píng)價(jià)其實(shí)並不令人意外。Redis在功能多樣性方面要勝過(guò)Memcached,這雖然讓者更為強(qiáng)大也更具靈活性、但其複雜程度也較後者為甚。
作為兩(liǎng)套被眾多企業(yè)採納並部署在無(wú)數(shù)關(guān)鍵性生產(chǎn)任務(wù)環(huán)境當(dāng)中的解決方案,Memcached與Redis在任何一種可行性程式語言領(lǐng)域都擁有能夠提供支持的客戶(hù)端庫(kù),而且二者也被包含在開(kāi)發(fā)人員們使用的多種庫(kù)及軟體包之內(nèi)。事實(shí)上,現(xiàn)在我們甚至已經(jīng)很難找到一套不包含Memcached或者Redis內(nèi)置支持機(jī)制的Web堆棧。
Memcached與Redis為什麼如此受人擁戴?除了二者卓越的實(shí)際效果之外,雙方各自極為簡(jiǎn)便的上手難度也是又一大加分項(xiàng)。無(wú)論是Memcached還是Redis,其使用便捷性在開(kāi)發(fā)人員當(dāng)中都可謂廣(guǎng)為人知。只需要幾分鐘我們就能完成安裝工作,並讓它們開(kāi)始與應(yīng)用程式順暢協(xié)作。換(huàn)句話(huà)來(lái)說(shuō),只需投入一小部分時(shí)間與精力,大家就能獲得立竿見(jiàn)影且效果極佳的性能表現(xiàn)提升——具體而言,性能將直接步入新的量級(jí)。面對(duì)如此簡(jiǎn)單而又能夠帶來(lái)巨大收益的解決方案,又有誰能抗拒得了它們的誘惑呢?
何時(shí)應(yīng)該使用Memcached
相對(duì)Memcached而言,Redis的面世時(shí)間更晚且具備更多功能,因此開(kāi)發(fā)人員通常將其視為默認(rèn)性首選方案。不過(guò)有兩(liǎng)類(lèi)特殊場(chǎng)景仍然是Memcached的一家天下。首先就是對(duì)小型靜態(tài)數(shù)據(jù)進(jìn)行緩存處理,最具代表性的例子就是HTML代碼片段。Memcached的內(nèi)部內(nèi)存管理機(jī)制雖然不像Redis的那樣複雜,但卻更具實(shí)際效率——這是因為Memcached在處理元數(shù)據(jù)時(shí)所消耗的內(nèi)存資源相對(duì)更少。作為Memcached所支持的惟一一種數(shù)據(jù)類(lèi)型,字符串非常適合用於保存那些只需要進(jìn)行讀取操作的數(shù)據(jù),因為字符串本身無(wú)需進(jìn)行進(jìn)一步處理。
除此之外,Memcached在橫向擴展方面也比Redis更具優(yōu)勢(shì)。由於其在設(shè)計(jì)上的思路傾向以及相對(duì)更為簡(jiǎn)單的功能設(shè)置,Memcached在實(shí)現(xiàn)擴展時(shí)的難度比Redis低得多。不過(guò)根據(jù)我們了解到的情況,目前已經(jīng)有多種經(jīng)過(guò)測(cè)試且切實(shí)有效的方案能夠將Redis擴展至多臺(tái)伺服器之上,而其即將發(fā)布的3.0版本(感興趣的朋友可以點(diǎn)擊此處查看其候選版本說(shuō)明)將包含專(zhuān)門(mén)針對(duì)橫向擴展場(chǎng)景的內(nèi)置集群化機(jī)制。
何時(shí)應(yīng)該使用Redis
除非大家需要考慮某種限定性條件(例如處理傳統(tǒng)應(yīng)用程式)對(duì)於Memcached的特殊依賴性,或者自己的實(shí)際用例屬於前面提到的兩(liǎng)類(lèi)場(chǎng)景中的一種,否則請直接選擇Redis並加以運(yùn)用。憑藉著Redis所帶來(lái)的卓越緩存方案,我們將擁有強(qiáng)大的處理能力——例如對(duì)緩存內(nèi)容及持久性進(jìn)行細(xì)節(jié)調(diào)整的能力——以及出色的整體執(zhí)行效率。
Redis幾乎在緩存管理工作中的每一個(gè)側面都表現(xiàn)出顯而易見(jiàn)的優(yōu)越性。這套緩存方案採用所謂數(shù)據(jù)回收機(jī)制,能夠將陳舊數(shù)據(jù)從內(nèi)存中刪除以提供新數(shù)據(jù)所必需的緩存空間。Memcached的數(shù)據(jù)回收機(jī)制使用的是LRU(即最低近期使用量)算法,而且往往會(huì)比較武斷地直接刪除掉與新數(shù)據(jù)體系相近的原有內(nèi)容。相比之下,Redis允許用戶(hù)更為精準(zhǔn)地進(jìn)行細(xì)化控制,利用六種不同回收策略確切提高緩存資源的實(shí)際利用率。Redis還採用更為複雜的內(nèi)存管理與回收對(duì)象備選方案。
Redis還能為我們帶來(lái)最大程度的靈活性空間,從而保證管理員在打理緩存對(duì)象時(shí)擁有充裕的施展平臺(tái)。在這方面,Memcached將鍵名限制在250位元組,值也被限制在不超過(guò)1MB,且只適用於普通字符串。相比之下,Redis則將鍵名與值的最大上限各自設(shè)定為512MB,且支持二進(jìn)位格式。Redis支持六種數(shù)據(jù)類(lèi)型,因此能夠更加智能地對(duì)數(shù)據(jù)進(jìn)行緩存處理及操作,這相當(dāng)於為應(yīng)用程式開(kāi)發(fā)人員敞開(kāi)了一道通往無(wú)儘可能性的大門(mén)。
相對(duì)於將對(duì)象保存為序列化字符串,Redis允許開(kāi)發(fā)人員以散列方式將對(duì)象域及值加以保存,並利用單一鍵對(duì)其進(jìn)行管理。Redis散列機(jī)制的存在保證開(kāi)發(fā)人員無(wú)需經(jīng)歷獲取完整字符串、反序列化、更新值、對(duì)象重新序列化並在每次值更新後利用其替代緩存內(nèi)完整字符串這一系列複雜的流程——這也意味著資源消耗量得以降低、性能表現(xiàn)迎來(lái)顯著提升。Redis所支持的其它數(shù)據(jù)類(lèi)型,例如Lists以及Sets——也可被用於實(shí)現(xiàn)更加複雜的緩存管理模式。
Redis的另一大重要優(yōu)勢(shì)在於,它所保存的數(shù)據(jù)具備透明化特性,也就是說(shuō)伺服器能夠直接對(duì)這些數(shù)據(jù)進(jìn)行操作。Redis當(dāng)中提供160多種可用命令,其中大部分用於實(shí)現(xiàn)數(shù)據(jù)處理操作並通過(guò)伺服器端腳本將邏輯嵌入至數(shù)據(jù)存儲(chǔ)體系當(dāng)中。這些內(nèi)置命令及用戶(hù)腳本帶來(lái)了極大的靈活性優(yōu)勢(shì),足以幫助大家直接在Redis內(nèi)部完成數(shù)據(jù)處理任務(wù)——而不必將數(shù)據(jù)在網(wǎng)絡(luò)中的其它專(zhuān)門(mén)處理系統(tǒng)之間來(lái)回移動(dòng)。
Redis還提供可選而且能夠具體調(diào)整的數(shù)據(jù)持久性方案,其設(shè)計(jì)目的在於在發(fā)生規(guī)劃(huà)內(nèi)停機(jī)或者計(jì)劃(huà)外故障之後對(duì)緩存內(nèi)容進(jìn)行重新引導(dǎo)。雖然我們更傾向於強(qiáng)調(diào)緩存內(nèi)數(shù)據(jù)的易失性與暫時(shí)性,但將數(shù)據(jù)在磁碟中加以持久保存在某些緩存場(chǎng)景當(dāng)中仍然極具現(xiàn)實(shí)意義。這種機(jī)制能夠在設(shè)備重啟之後快速將保存在磁碟上的數(shù)據(jù)重新載入至緩存當(dāng)中,從而大大縮短緩存預熱周期並根據(jù)主數(shù)據(jù)存儲(chǔ)內(nèi)容對(duì)當(dāng)前緩存內(nèi)容進(jìn)行重新評(píng)估。
最後但也同樣重要的一點(diǎn)是,Redis能夠提供複製功能。複製功能旨在幫助緩存體系實(shí)現(xiàn)高可用性配置方案,從而在遭遇故障的情況下繼續(xù)為應(yīng)用程式提供不間斷的緩存服務(wù)。很明顯,一套成熟的緩存方案應(yīng)該能夠在應(yīng)用程式發(fā)生故障時(shí)略微甚至完全不給用戶(hù)體驗(yàn)或者應(yīng)用程式性能表現(xiàn)帶來(lái)任何影響,而這種對(duì)緩存內(nèi)容及服務(wù)可用性的有力保障在大多數(shù)情況下也成為緩存解決方案的一大主要優(yōu)勢(shì)。
開(kāi)源軟體業(yè)界一直在不斷努力,為我們帶來(lái)當(dāng)下技術(shù)領(lǐng)域中最為出色的各類(lèi)解決方案。而在談到利用緩存機(jī)制對(duì)應(yīng)用程式性能表現(xiàn)加以提升這一話(huà)題時(shí),Redis與Memcached作為兩(liǎng)款廣(guǎng)受讚譽(yù)而且久經(jīng)考驗(yàn)的解決方案、也自然而然地成為完成這項(xiàng)任務(wù)的兩(liǎng)大首選技術(shù)成果。不過(guò)從功能多樣性以及設(shè)計(jì)先進(jìn)性的角度出發(fā),Redis顯然更適合被大家作為通用性的首選方案——除了少部分特殊場(chǎng)景之外。
以上是我們深圳網(wǎng)站建設(shè)源美設(shè)計(jì)公司提供的緩存清理兩(liǎng)種方法,看完以上的內(nèi)容您是不是對(duì)緩存功能上又有了一定的了解了呢?源美設(shè)計(jì)是網(wǎng)站建設(shè)製作專(zhuān)家,為您提供專(zhuān)業(yè)的網(wǎng)站建設(shè),集團(tuán)網(wǎng)站建設(shè),營(yíng)銷(xiāo)型網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),企業(yè)官網(wǎng)建設(shè),響應(yīng)式網(wǎng)站建設(shè),並提供一體化的網(wǎng)站推廣(guǎng)解決方案,服務(wù)熱線(xiàn):0755-36630155,致電客戶(hù)專(zhuān)線(xiàn):138-2888-3821謝先生
文章引用:http://www.szymweb.com/new/228.html
本站文章為深圳網(wǎng)站建設(shè)·源美網(wǎng)絡(luò)原創(chuàng)策劃(huà),如有版權(quán)糾紛或者違規(guī)問(wèn)題,請聯(lián)繫我們刪除,謝謝!
售後保障
承諾任何問(wèn)題1小時(shí)內(nèi)解決數(shù)據(jù)備份
更安全、更高效、更穩(wěn)定價(jià)格公道精準(zhǔn)
項(xiàng)目經(jīng)理精準(zhǔn)報(bào)價(jià)不弄虛作假合作無(wú)風(fēng)險(xiǎn)
重合同講信譽(yù),無(wú)效全額退款