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