溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

什么是Redis緩存

發(fā)布時(shí)間:2021-10-11 17:19:43 來源:億速云 閱讀:472 作者:iii 欄目:編程語言

本篇內(nèi)容介紹了“什么是Redis緩存”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

什么是Redis緩存

簡(jiǎn)介

什么是Redis?

Redis是一種存儲(chǔ)系統(tǒng),像MongoDB一樣,都是鍵值對(duì)存儲(chǔ),也就是key-value結(jié)構(gòu)。也就是說,Redis其實(shí)是一種數(shù)據(jù)庫,它可以跨平臺(tái)使用,本系列整合SpringBoot+Redis。

Redis本身是由C語言編寫,是符合ANSI C標(biāo)準(zhǔn)的開源系統(tǒng)。Redis是Remote Dictionary Server的縮寫,現(xiàn)在常用于分布式數(shù)據(jù)庫以及高可用緩存系統(tǒng)。實(shí)際上,學(xué)會(huì)Redis整合了SpringBoot后,再整合SpringCloud就是水到渠成了。

為什么要用Redis?

有朋友可能要問,既然Redis和MongoDB這么像,那我用后者不就行么,干嘛學(xué)前者?實(shí)際上MongoDB和Redis是有很大區(qū)別的,他們只是在存儲(chǔ)方式上有相似點(diǎn)。下面列出二者的不同之處:

  • 數(shù)據(jù)存儲(chǔ)位置

  • MongoDB存儲(chǔ)的數(shù)據(jù)存放在磁盤,少部分?jǐn)?shù)據(jù)存放在內(nèi)存中。為啥數(shù)據(jù)庫數(shù)據(jù)還要存放在內(nèi)存呢?是因?yàn)閿?shù)據(jù)庫的緩存系統(tǒng)會(huì)判斷熱點(diǎn)數(shù)據(jù),頻繁存取的數(shù)據(jù)要放在內(nèi)存達(dá)到高效處理。

  • Redis的數(shù)據(jù)全部存放在內(nèi)存,并定期寫入磁盤,也因此造就了Redis的高性能。當(dāng)內(nèi)存不夠用,Redis會(huì)利用LRU(Least Recently Used)算法取代數(shù)據(jù),沒錯(cuò),就是操作系統(tǒng)西面置換算法。

  • 數(shù)據(jù)存儲(chǔ)方式

  • MongoDB利用了mmap函數(shù),將文件數(shù)據(jù)映射的內(nèi)存進(jìn)行增刪查改,修改完之后操作系統(tǒng)會(huì)將內(nèi)存數(shù)據(jù)flush到磁盤。問題是二者并非一個(gè)事務(wù),因此兩個(gè)事務(wù)間宕機(jī)的話,數(shù)據(jù)自然丟失。

  • Redis有兩種存儲(chǔ)模式,RDB與AOF模式,這個(gè)我們后面會(huì)說到。

  • 數(shù)據(jù)處理速度

  • MongoDB比Redis慢,這也是Redis屬于內(nèi)存存儲(chǔ)系統(tǒng)的最大優(yōu)勢(shì)。當(dāng)然,我們暫時(shí)不考慮內(nèi)存不夠用的情況。

除此之外,目前分布式是大廠主流技術(shù)棧,Redis是大廠會(huì)采用的分布式緩存方式。并且在應(yīng)對(duì)高并發(fā)的場(chǎng)景上,比如阿里雙十一,騰訊游戲新皮膚的出場(chǎng)或者過年紅包等,利用Redis和消息隊(duì)列是主流的方法。

入門是什么程度?精通是什么程度?

入門就是對(duì)Redis完全不了解,但是你要有基礎(chǔ)的知識(shí),比如基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),基礎(chǔ)的類型,基礎(chǔ)的內(nèi)存知識(shí),基礎(chǔ)的分布式知識(shí),

基礎(chǔ)的Java/Spring知識(shí)和linux的基本操作。這個(gè)大可放心,我水平也一般般,所以我說的基礎(chǔ)一定是基礎(chǔ)。

精通并不是說最后能自己寫一個(gè)Redis,或者說自己能成為Redis的穩(wěn)定開發(fā)維護(hù)者,我自己也做不到,所以這里的精通是能夠了解Redis的各種機(jī)制、算法,了解Redis提供的常用方法,了解Redis使用場(chǎng)景,自己能排坑,并且能夠自己整合SpringBoot框架。實(shí)際上,這個(gè)整合SpringBoot框架最簡(jiǎn)單,官網(wǎng)寫的很詳細(xì)。最好能在Redis基礎(chǔ)上進(jìn)行二次開發(fā),實(shí)際上理解了原理,會(huì)寫C語言,二次開發(fā)還是不難的。

既然是系列文章,我就不能全寫在一篇里,內(nèi)容太多對(duì)于我的排版和學(xué)習(xí)者的體驗(yàn)也不好,所以我會(huì)盡量把每一篇文章壓縮在一個(gè)可以接受的長(zhǎng)度范圍,當(dāng)然,我盡量在每一篇文章都給出系列所有文章的鏈接,供大家,也供我日后方便查閱。如果文章能幫到你,希望給個(gè)贊鼓勵(lì)下,雖然不是靠這個(gè)生存,但是得到認(rèn)可還是很高興的。

緩存以及使用場(chǎng)景

什么是緩存?

緩存實(shí)際上就是某個(gè)程序利用內(nèi)存來優(yōu)化頻繁讀取的數(shù)據(jù)的一種方式。緩存就是內(nèi)存的一部分。之前我們寫到,數(shù)據(jù)庫操作往往是存儲(chǔ)在磁盤中的,但是磁盤的IO又慢的不得了,怎么辦?程序猿們想了一種方法,就是利用好內(nèi)存。不是磁盤IO慢么,那就利用內(nèi)存好了,內(nèi)存IO很快的,但是東西太多,放不進(jìn)內(nèi)存怎么辦?那就把常用的數(shù)據(jù)放在內(nèi)存吧。

現(xiàn)在是2021年,熟悉NBA的朋友都知道,今年威少的數(shù)據(jù)又爆炸,所以球迷可能會(huì)時(shí)??赐俚臄?shù)據(jù),加上威少的粉絲也不少,可能就存在高并發(fā)的問題。但是每次從磁盤拿數(shù)據(jù)也太慢了,那就把單獨(dú)把威少的數(shù)據(jù)放在內(nèi)存中,別人的數(shù)據(jù)繼續(xù)躺在磁盤里,這樣大大加快了系統(tǒng)響應(yīng)的速度,這就是緩存。

但是,NBA可不止有一個(gè)球星,庫里,詹姆斯,約基奇等都是很出色的球員,擁有球迷的數(shù)量不比威少少,那就把他們的數(shù)據(jù)都放在緩存中吧,這樣就快了。但是我們發(fā)現(xiàn),NBA球星太多了,內(nèi)存放不下,怎么辦?這就引出了我們的常見的緩存淘汰算法,對(duì)操作系統(tǒng)有了解的朋友可能知道,什么LRU,LFU,F(xiàn)IFO,F(xiàn)ILO等等,我把這個(gè)放在后面的Redis算法機(jī)制里說。

本地緩存與分布式緩存

先看看例子,還是NBA球員,現(xiàn)在我的內(nèi)存太小了啊,每個(gè)計(jì)算機(jī)只能存放一名NBA球員的數(shù)據(jù),但是我現(xiàn)在有3名球員數(shù)據(jù)需要存放在計(jì)算機(jī)里面怎么辦?

本地緩存

本地緩存就是將數(shù)據(jù)存放在本地內(nèi)存中,由于不需要通過網(wǎng)絡(luò)連接到其他主機(jī),自然速度也最快,當(dāng)然缺點(diǎn)也是有的。比如Mybatis一二級(jí)緩存,Caffeine,Guava都是本地緩存的典型范例?;氐街暗睦樱?名球員放在3臺(tái)不同的主機(jī),如果用本地緩存的架構(gòu)就是這樣的:

什么是Redis緩存

  • 優(yōu)點(diǎn):

速度快,不用經(jīng)過網(wǎng)絡(luò)傳輸

  • 缺點(diǎn):

每臺(tái)主機(jī)可用緩存容量有限

多節(jié)點(diǎn)無法共享數(shù)據(jù)

分布式緩存

分布式緩存就是利用網(wǎng)絡(luò),將緩存放在某一臺(tái)主機(jī)上,這樣緩存的容量限制就是緩存機(jī)的內(nèi)存大小,其IO瓶頸就是網(wǎng)速。Redis就是典型的分布式緩存,當(dāng)然,我們也可以讓Redis變成徹頭徹尾的本地緩存,不經(jīng)網(wǎng)絡(luò)調(diào)用即可。

什么是Redis緩存

當(dāng)然,上圖并不準(zhǔn)確,既然緩存的分布式了,當(dāng)然不能只部署在一臺(tái)緩存機(jī)上,往往都是集群的方式部署緩存機(jī)的。

“什么是Redis緩存”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI