十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
本篇內(nèi)容介紹了“什么是redis緩存”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、網(wǎng)站設(shè)計、成華網(wǎng)絡(luò)推廣、成都小程序開發(fā)、成華網(wǎng)絡(luò)營銷、成華企業(yè)策劃、成華品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供成華建站搭建服務(wù),24小時服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
Redis是一種存儲系統(tǒng),像MongoDB一樣,都是鍵值對存儲,也就是key-value結(jié)構(gòu)。也就是說,Redis其實是一種數(shù)據(jù)庫,它可以跨平臺使用,本系列整合SpringBoot+Redis。
Redis本身是由C語言編寫,是符合ANSI C標(biāo)準(zhǔn)的開源系統(tǒng)。Redis是Remote Dictionary Server的縮寫,現(xiàn)在常用于分布式數(shù)據(jù)庫以及高可用緩存系統(tǒng)。實際上,學(xué)會Redis整合了SpringBoot后,再整合SpringCloud就是水到渠成了。
有朋友可能要問,既然Redis和MongoDB這么像,那我用后者不就行么,干嘛學(xué)前者?實際上MongoDB和Redis是有很大區(qū)別的,他們只是在存儲方式上有相似點。下面列出二者的不同之處:
數(shù)據(jù)存儲位置
MongoDB存儲的數(shù)據(jù)存放在磁盤,少部分?jǐn)?shù)據(jù)存放在內(nèi)存中。為啥數(shù)據(jù)庫數(shù)據(jù)還要存放在內(nèi)存呢?是因為數(shù)據(jù)庫的緩存系統(tǒng)會判斷熱點數(shù)據(jù),頻繁存取的數(shù)據(jù)要放在內(nèi)存達(dá)到高效處理。
Redis的數(shù)據(jù)全部存放在內(nèi)存,并定期寫入磁盤,也因此造就了Redis的高性能。當(dāng)內(nèi)存不夠用,Redis會利用LRU(Least Recently Used)算法取代數(shù)據(jù),沒錯,就是操作系統(tǒng)西面置換算法。
數(shù)據(jù)存儲方式
MongoDB利用了mmap函數(shù),將文件數(shù)據(jù)映射的內(nèi)存進(jìn)行增刪查改,修改完之后操作系統(tǒng)會將內(nèi)存數(shù)據(jù)flush到磁盤。問題是二者并非一個事務(wù),因此兩個事務(wù)間宕機(jī)的話,數(shù)據(jù)自然丟失。
Redis有兩種存儲模式,RDB與AOF模式,這個我們后面會說到。
數(shù)據(jù)處理速度
MongoDB比Redis慢,這也是Redis屬于內(nèi)存存儲系統(tǒng)的最大優(yōu)勢。當(dāng)然,我們暫時不考慮內(nèi)存不夠用的情況。
除此之外,目前分布式是大廠主流技術(shù)棧,Redis是大廠會采用的分布式緩存方式。并且在應(yīng)對高并發(fā)的場景上,比如阿里雙十一,騰訊游戲新皮膚的出場或者過年紅包等,利用Redis和消息隊列是主流的方法。
入門就是對Redis完全不了解,但是你要有基礎(chǔ)的知識,比如基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),基礎(chǔ)的類型,基礎(chǔ)的內(nèi)存知識,基礎(chǔ)的分布式知識,
基礎(chǔ)的Java/Spring知識和linux的基本操作。這個大可放心,我水平也一般般,所以我說的基礎(chǔ)一定是基礎(chǔ)。
精通并不是說最后能自己寫一個Redis,或者說自己能成為Redis的穩(wěn)定開發(fā)維護(hù)者,我自己也做不到,所以這里的精通是能夠了解Redis的各種機(jī)制、算法,了解Redis提供的常用方法,了解Redis使用場景,自己能排坑,并且能夠自己整合SpringBoot框架。實際上,這個整合SpringBoot框架最簡單,官網(wǎng)寫的很詳細(xì)。最好能在Redis基礎(chǔ)上進(jìn)行二次開發(fā),實際上理解了原理,會寫C語言,二次開發(fā)還是不難的。
既然是系列文章,我就不能全寫在一篇里,內(nèi)容太多對于我的排版和學(xué)習(xí)者的體驗也不好,所以我會盡量把每一篇文章壓縮在一個可以接受的長度范圍,當(dāng)然,我盡量在每一篇文章都給出系列所有文章的鏈接,供大家,也供我日后方便查閱。如果文章能幫到你,希望給個贊鼓勵下,雖然不是靠這個生存,但是得到認(rèn)可還是很高興的。
什么是緩存?
緩存實際上就是某個程序利用內(nèi)存來優(yōu)化頻繁讀取的數(shù)據(jù)的一種方式。緩存就是內(nèi)存的一部分。之前我們寫到,數(shù)據(jù)庫操作往往是存儲在磁盤中的,但是磁盤的IO又慢的不得了,怎么辦?程序猿們想了一種方法,就是利用好內(nèi)存。不是磁盤IO慢么,那就利用內(nèi)存好了,內(nèi)存IO很快的,但是東西太多,放不進(jìn)內(nèi)存怎么辦?那就把常用的數(shù)據(jù)放在內(nèi)存吧。
現(xiàn)在是2021年,熟悉NBA的朋友都知道,今年威少的數(shù)據(jù)又爆炸,所以球迷可能會時??赐俚臄?shù)據(jù),加上威少的粉絲也不少,可能就存在高并發(fā)的問題。但是每次從磁盤拿數(shù)據(jù)也太慢了,那就把單獨把威少的數(shù)據(jù)放在內(nèi)存中,別人的數(shù)據(jù)繼續(xù)躺在磁盤里,這樣大大加快了系統(tǒng)響應(yīng)的速度,這就是緩存。
但是,NBA可不止有一個球星,庫里,詹姆斯,約基奇等都是很出色的球員,擁有球迷的數(shù)量不比威少少,那就把他們的數(shù)據(jù)都放在緩存中吧,這樣就快了。但是我們發(fā)現(xiàn),NBA球星太多了,內(nèi)存放不下,怎么辦?這就引出了我們的常見的緩存淘汰算法,對操作系統(tǒng)有了解的朋友可能知道,什么LRU,LFU,F(xiàn)IFO,F(xiàn)ILO等等,我把這個放在后面的Redis算法機(jī)制里說。
先看看例子,還是NBA球員,現(xiàn)在我的內(nèi)存太小了啊,每個計算機(jī)只能存放一名NBA球員的數(shù)據(jù),但是我現(xiàn)在有3名球員數(shù)據(jù)需要存放在計算機(jī)里面怎么辦?
本地緩存
本地緩存就是將數(shù)據(jù)存放在本地內(nèi)存中,由于不需要通過網(wǎng)絡(luò)連接到其他主機(jī),自然速度也最快,當(dāng)然缺點也是有的。比如Mybatis一二級緩存,Caffeine,Guava都是本地緩存的典型范例?;氐街暗睦樱?名球員放在3臺不同的主機(jī),如果用本地緩存的架構(gòu)就是這樣的:
優(yōu)點:
速度快,不用經(jīng)過網(wǎng)絡(luò)傳輸
缺點:
每臺主機(jī)可用緩存容量有限
多節(jié)點無法共享數(shù)據(jù)
分布式緩存
分布式緩存就是利用網(wǎng)絡(luò),將緩存放在某一臺主機(jī)上,這樣緩存的容量限制就是緩存機(jī)的內(nèi)存大小,其IO瓶頸就是網(wǎng)速。Redis就是典型的分布式緩存,當(dāng)然,我們也可以讓Redis變成徹頭徹尾的本地緩存,不經(jīng)網(wǎng)絡(luò)調(diào)用即可。
當(dāng)然,上圖并不準(zhǔn)確,既然緩存的分布式了,當(dāng)然不能只部署在一臺緩存機(jī)上,往往都是集群的方式部署緩存機(jī)的。
“什么是Redis緩存”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!