遠(yuǎn)程字典服務(wù)器Redis緩存全接觸
譯文【51CTO.com快譯】我們都遇到過應(yīng)用程序運(yùn)行慢騰騰的情況。再優(yōu)秀的代碼也會在高負(fù)載下降低性能。緩存是一種快速且相對省錢的方法,可大幅提升性能,并縮短響應(yīng)時間。
Redis簡介
Redis(遠(yuǎn)程字典服務(wù)器)是一種開源的內(nèi)存中數(shù)據(jù)存儲,最常用作分布式緩存。它提供各種高效的數(shù)據(jù)結(jié)構(gòu),旨在可以高速訪問您的數(shù)據(jù)。Redis又叫NoSQL數(shù)據(jù)庫和鍵/值存儲。由于Redis將數(shù)據(jù)存儲在內(nèi)存中,而不是存儲在磁盤上,提供了無與倫比的速度、可靠性和性能。
那么,內(nèi)存中數(shù)據(jù)存儲又是什么呢?簡而言之,它是將整個數(shù)據(jù)集保存在內(nèi)存中的數(shù)據(jù)庫。這意味著每當(dāng)您查詢數(shù)據(jù)庫或更新數(shù)據(jù)庫中的數(shù)據(jù)時,僅訪問主內(nèi)存。因此,這些操作不涉及磁盤。這很棒,因?yàn)橹鲀?nèi)存比任何磁盤都要快得多。
為什么將Redis用作緩存?
緩存的主要目的是,縮短訪問存儲在應(yīng)用程序主內(nèi)存空間之外的數(shù)據(jù)所需的時間。如果不使用緩存,應(yīng)用程序針對每個請求與數(shù)據(jù)源進(jìn)行交互;如果使用緩存,只需要對外部數(shù)據(jù)源發(fā)出單個請求,隨后的訪問由緩存來處理。
應(yīng)用程序依賴外部數(shù)據(jù)源時,這些數(shù)據(jù)源的延遲和吞吐量會造成性能瓶頸。提升性能的一種方法是在內(nèi)存中存儲和處理數(shù)據(jù),其位置更靠近應(yīng)用程序。
這時候Redis就能發(fā)揮作用。Redis旨在將所有數(shù)據(jù)存儲在內(nèi)存中,從而在讀取或?qū)懭霐?shù)據(jù)時提供盡可能高的性能。
Redis的速度極快。它提供亞毫秒級響應(yīng)時間,每秒可支持?jǐn)?shù)百萬個請求,以支持要求苛刻的實(shí)時應(yīng)用程序。
您要做的通常是將經(jīng)常訪問的數(shù)據(jù)存儲在Redis中,那樣無論何時請求數(shù)據(jù),數(shù)據(jù)都可以來自緩存而不是您的數(shù)據(jù)庫。然后,只要對您的數(shù)據(jù)進(jìn)行更改,就可以使相關(guān)緩存無效,那樣您可以讓緩存保持最新。
Redis緩存的工作原理
假設(shè)您有一個基于WordPress的網(wǎng)站。
WordPress頁面首次加載時,在服務(wù)器上執(zhí)行數(shù)據(jù)庫查詢。Redis會記住或緩存該查詢。因此,另一個用戶加載WordPress頁面時,結(jié)果從Redis和內(nèi)存來提供,無需查詢數(shù)據(jù)庫。
對象緩存的工作原理是將加載WordPress頁面所需的SQL查詢緩存在內(nèi)存中。當(dāng)頁面加載時,生成的SQL查詢結(jié)果由Redis從內(nèi)存來提供,因此查詢不必命中數(shù)據(jù)庫。結(jié)果是頁面加載時間短得多,服務(wù)器對數(shù)據(jù)庫資源的影響較小。
圖1. Redis的工作原理
訪問內(nèi)存(物理RAM)中的數(shù)據(jù)比訪問硬驅(qū)中的數(shù)據(jù)要快得多。因此很容易注意到,如果應(yīng)用程序想要訪問的數(shù)據(jù)在主內(nèi)存中,訪問該數(shù)據(jù)比訪問存儲在硬驅(qū)上的數(shù)據(jù)容易得多。
如果查詢在Redis中不可用,數(shù)據(jù)庫提供結(jié)果,Redis將結(jié)果添加到緩存中。如果值在數(shù)據(jù)庫中加以更新(比如在WordPress中創(chuàng)建了一個新的帖子或頁面),該查詢的Redis值將無效,以防止提供錯誤的緩存數(shù)據(jù)。
為什么使用Redis?
- 快速響應(yīng)的數(shù)據(jù)庫:它將數(shù)據(jù)存儲在內(nèi)存中,而不是存儲在磁盤上,因此執(zhí)行讀寫操作時,響應(yīng)時間比其他數(shù)據(jù)庫快。可以與其他數(shù)據(jù)庫一起使用,有助于減輕負(fù)載、提升性能,但也可以用作主數(shù)據(jù)庫。
- 數(shù)據(jù)持久性:Redis使用持久性磁盤存儲,旨在遇到進(jìn)程中斷和網(wǎng)絡(luò)瓶頸后可以存活下來。
- 會話緩存:Redis最明顯的使用場景之一是將其用作會話緩存。與其他會話存儲相比,使用Redis的優(yōu)點(diǎn)在于Redis提供了持久性。
- 基于鍵的訪問:Redis基于鍵值模型,其中數(shù)據(jù)由Redis通過鍵來存儲和獲取。基于鍵的訪問帶來了極高效的訪問時間,這種模型可自然地映射到緩存。
想了解Redis的更多信息以及相關(guān)資源,可以訪問說明文檔:https://redis.io/。
原文標(biāo)題:Redis as Cache: How it Works and Why to Use it,作者:Bobby Borisov
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】