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