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