什么是缓存?为什么要使用Redis?
文章目錄
- 什么是緩存?
- 緩存 VS 數據庫
- 本地緩存 VS 分布式緩存
- 本地緩存
- 分布式緩存
- Memcached VS Redis
什么是緩存?
緩存是?個高速數據交換的存儲器,使用它可以快速的訪問和操作數據。
舉個通俗的例子。
小明經營著一家飯店,在剛開張的時候由于名氣不足,客源少,生意并不是很忙,平時沒事的時候就閑著,有客人來了再進廚房安排做菜。隨著飯店的日益發(fā)展,此時的飯店已經不同往日,有著大量的穩(wěn)定客源,并且在某些節(jié)假日的時候甚至爆滿。按照以前的做法,那肯定是行不通了,在用餐高峰期的時候因為備餐慢導致了客戶的長時間等待,使得飯店的屢遭投訴。
為解決這一問題,小明想到了一個辦法,可以在空閑的時候,提前將熱門的菜做完后放入保溫柜,等用餐高峰期時再拿出來加熱后就可以直接上菜,就規(guī)避了短時間內大量客源而導致的備餐慢的問題,通過這一方法,即使在高峰期,也能很好的應對。
這就是緩存的本質,將熱點資源(高頻讀、低頻寫)提前放入離用戶最近、訪問速度更快的地方,以提高訪問速度。
緩存 VS 數據庫
相比于數據庫而言,緩存的操作性能更高
本地緩存 VS 分布式緩存
根據緩存是否與應用進程屬于同一進程(單機與多機),又分為本地緩存和分布式緩存
本地緩存
本地緩存也叫做單機緩存,即將服務部署到一臺服務器上,所以本地緩存只適用于當前系統(tǒng)
舉個例子,這個就如同每個學校的校規(guī),根據學校的宗旨以教學理念不同,每個學校的校規(guī)都不一樣,對于A學校的學生來說,B學校的校規(guī)毫無意義,也就是說每個學校的校規(guī)只適用與那個學校。
所以本地緩存只適用于當前系統(tǒng)
優(yōu)缺點
- 訪問速度快,但無法進行大數據存儲
- 集群的數據更新問題
- 數據隨應用進程的重啟而丟失
分布式緩存
分布式緩存也叫做多機緩存,即將服務部署到多臺服務器上,并且通過負載分發(fā)將用戶的請求按照?定的規(guī)則分發(fā)到不同服務器。
而分布式緩存就如同教育局定下來的教學規(guī)范,無論是任何學校都必須遵守這個規(guī)范。
所以分布式緩存適用與所有的系統(tǒng)。
優(yōu)缺點
- 支持大數據量存儲,不受應用進程重啟影響
- 數據集中存儲,保證數據一致性
- 數據讀寫分離,高性能,高可用
- 數據跨網絡傳輸,性能低于本地緩存
Memcached VS Redis
在市面上流行的分布式緩存中間件有兩種,分別是Redis和Memcached,我們該如何對他們進行一個選擇呢?
存儲方式
- Memcached把所有數據存在內存當中,數據大小不能超過內存大小,并且斷電后數據會丟失。(不支持持久化,導致容災能力弱)
- Redis有部分存儲在硬盤中,保證了數據的持久性。(持久化策略)
數據類型
- Memcached對數據類型的支持較為簡單,有時需要將數據拿到客戶端來進行類似的修改再set回去,增加了網絡IO的次數和數據體積
- Redis具有復雜的數據類型,并且這些復雜類型的操作和get/set一樣高效
存儲值大小
- Redis最大可以達到512mb
- Memcached最大只有1mb
性能對于
- Redis使用單核,在存儲小數據時Redis有著明顯的優(yōu)勢
- Memcached使用多核,雖然在存儲小數據的時候性能不及Redis,但是在存儲大數據的時候Memcached要遠遠強于Redis
雖然從上面的結論以及當前流行程度來看,Redis都遙遙領先,但是在某些場景下,Memcached的作用也會高于Redis(例如海量數據查詢),所以還需要根據具體使用場景來進行選擇
適用場景
- Redis除了作為NoSQL數據庫使用外,還能用做消息隊列、數據堆棧和數據緩存等;
- Memcached適合于緩存SQL語句、數據集、用戶臨時性數據、延遲查詢數據和session等。
總結
以上是生活随笔為你收集整理的什么是缓存?为什么要使用Redis?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis 数据结构 :SDS、链表、字
- 下一篇: Redis 基本数据类型 :String