柚子快報(bào)邀請(qǐng)碼778899分享:數(shù)據(jù)庫(kù) nosql Redis
柚子快報(bào)邀請(qǐng)碼778899分享:數(shù)據(jù)庫(kù) nosql Redis
Redis
目錄
Redis前言一、NoSQL的由來(lái)二、什么是NoSQL三、NoSQL的特點(diǎn)四、NoSQL的四大分類1. KV鍵值對(duì)2.文檔型數(shù)據(jù)庫(kù)3.列存儲(chǔ)數(shù)據(jù)庫(kù)4. 圖關(guān)系數(shù)據(jù)庫(kù)5. 四種關(guān)系型數(shù)據(jù)庫(kù)對(duì)比
五、Redis入門(mén)六、Redis持久化什么是RDB(Redis Database)什么是AOF(Append Only File)
七、Redis主從復(fù)制哨兵模式
八、Redis緩存穿透,擊穿和雪崩緩存穿透緩存擊穿緩存雪崩
總結(jié)
前言
剛剛學(xué)完Redis,所以想要淺顯的總結(jié)一下,如果那里有不對(duì)的地方,麻煩各位大佬在評(píng)論區(qū)指出,謝謝~
好可愛(ài)的關(guān)于Redis的文章和下面的視頻是配套的!
哈哈哈,超級(jí)可愛(ài)的Redis,快去看看!隨便幫我催催更(# . #)
這篇文章是狂神的Redis視頻的學(xué)習(xí)筆記!
一、NoSQL的由來(lái)
??? Nosql是在MySQL后面出現(xiàn)的,因?yàn)榛ヂ?lián)網(wǎng)的發(fā)展,MySQL要容納的數(shù)據(jù)越來(lái)越多,對(duì)MySQL的請(qǐng)求也是越來(lái)越多,眾所周知,對(duì)數(shù)據(jù)庫(kù)的請(qǐng)求60%都是在讀數(shù)據(jù),而且經(jīng)常都是重復(fù)查詢一個(gè)東西,浪費(fèi)很多時(shí)間去進(jìn)行磁盤(pán)I/O。所以我們想要減輕數(shù)據(jù)庫(kù)的壓力,就使用緩存來(lái)保證效率,以后每次要獲取可以直接從緩存中拿,如果要寫(xiě)的話就可以到MySQL中寫(xiě),就這樣實(shí)現(xiàn)了讀寫(xiě)分離,極大的提高了效率。
二、什么是NoSQL
??? NOSQL=Not Only SQL(不僅僅是SQL) ??? 泛指非關(guān)系型數(shù)據(jù)庫(kù),隨著web2.0互聯(lián)網(wǎng)的誕生!傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)很難對(duì)付web2.0時(shí)代!尤其是超大規(guī)模的高并發(fā)的社區(qū)!暴露出來(lái)很多難以克服的問(wèn)題,NoSQL在當(dāng)今大數(shù)據(jù)環(huán)境下發(fā)展的十分迅速,Redis是發(fā)展最快的。
三、NoSQL的特點(diǎn)
解耦!
方便擴(kuò)展(數(shù)據(jù)之間沒(méi)有關(guān)系,很好擴(kuò)展?。┐髷?shù)據(jù)量高性能(Redis一秒8萬(wàn)次,讀取11萬(wàn),NoSQL是緩存記錄級(jí),是一種細(xì)粒度的緩存,性能會(huì)比較高?。?shù)據(jù)類型是多樣型的!
四、NoSQL的四大分類
1. KV鍵值對(duì)
RedisTairMemecahe
2.文檔型數(shù)據(jù)庫(kù)
MongoDB
MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù),C++編寫(xiě),主要用來(lái)處理大量的文檔。MongoDB是一個(gè)介于關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)中的中間產(chǎn)品。MongoDB是非關(guān)系型數(shù)據(jù)庫(kù)中功能最豐富,最像關(guān)系型數(shù)據(jù)庫(kù)的。 ConthDB
3.列存儲(chǔ)數(shù)據(jù)庫(kù)
HBase分布式文件系統(tǒng)
4. 圖關(guān)系數(shù)據(jù)庫(kù)
Neo4jInfoGrid
5. 四種關(guān)系型數(shù)據(jù)庫(kù)對(duì)比
五、Redis入門(mén)
Redis是什么?
??? Redis是一款內(nèi)存高速緩存數(shù)據(jù)庫(kù)。Redis全稱為:Remote Dictionary Server(遠(yuǎn)程數(shù)據(jù)服務(wù)),使用C語(yǔ)言編寫(xiě),Redis是一個(gè)key-value存儲(chǔ)系統(tǒng)(鍵值存儲(chǔ)系統(tǒng)),支持豐富的數(shù)據(jù)類型,如:String、list、set、zset、hash。 ??? Redis是一種支持key-value等多種數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)系統(tǒng)??捎糜诰彺?,事件發(fā)布或訂閱,高速隊(duì)列等場(chǎng)景。支持網(wǎng)絡(luò),提供字符串,哈希,列表,隊(duì)列,集合結(jié)構(gòu)直接存取,基于內(nèi)存,可持久化。
Redis能干什么?
1、內(nèi)存存儲(chǔ)(內(nèi)存中是斷電即失)、持久化 2、效率高,可以用于高數(shù)緩存 3、發(fā)布訂閱系統(tǒng) 4、地圖信息分析 5、計(jì)時(shí)器、計(jì)數(shù)器 ……
特性
多樣的數(shù)據(jù)類型、持久化、集群、事務(wù)……
基礎(chǔ)的知識(shí)
??? redis默認(rèn)有16個(gè)數(shù)據(jù)庫(kù),默認(rèn)使用的是第0個(gè)(可以用select命名進(jìn)行切換數(shù)據(jù)庫(kù)。) Redis是單線程的! ??? Redis是基于內(nèi)存操作的,CPU不是Redis性能瓶頸,Redis的瓶頸是根據(jù)機(jī)器的內(nèi)存和網(wǎng)絡(luò)帶寬,既然可以使用單線程來(lái)實(shí)現(xiàn),那就實(shí)現(xiàn)了單線程。 ??? Redis雖然是C語(yǔ)言寫(xiě)的,由官方提供的數(shù)據(jù)為100000+的QPS,可知Redis完全不必同樣是使用key-value的Memacache差。
緩存過(guò)期和緩存淘汰
??? 服務(wù)器上的內(nèi)存是有限的,但是數(shù)據(jù)是無(wú)限的,如果這樣一直存下去,服務(wù)器上的內(nèi)存是不夠用的。所以就出現(xiàn)了緩存過(guò)期和緩存淘汰。 緩存過(guò)期 ??? 給緩存內(nèi)容設(shè)置一個(gè)超時(shí)時(shí)間,具體設(shè)置多長(zhǎng)交給應(yīng)用程序們?nèi)ピO(shè)置,如果有一個(gè)數(shù)據(jù)超過(guò)了緩存時(shí)間,就把這個(gè)數(shù)據(jù)刪除。 內(nèi)存淘汰
noeviction:返回錯(cuò)誤,不會(huì)刪除任何鍵值allkeys-lru:使用LRU算法刪除最近最少使用的鍵值volatile-lru:使用LRU算法從設(shè)置了過(guò)期時(shí)間的鍵集合中刪除最近最少使用的鍵值allkeys-random:從所有key隨機(jī)刪除volatile-random:從設(shè)置了過(guò)期時(shí)間的鍵的集合中隨機(jī)刪除volatile-ttl:從設(shè)置了過(guò)期時(shí)間的鍵中刪除剩余時(shí)間最短的鍵volatile-lfu:從配置了過(guò)期時(shí)間的鍵中刪除使用頻率最少的鍵allkeys-lfu:從所有鍵中刪除使用頻率最少的鍵
六、Redis持久化
??? Redis是內(nèi)存數(shù)據(jù)庫(kù),如果不將內(nèi)存中的數(shù)據(jù)庫(kù)狀態(tài)保存到磁盤(pán),那么一旦服務(wù)器進(jìn)程退出,服務(wù)器中的數(shù)據(jù)庫(kù)狀態(tài)也會(huì)消失。所以Redis提供了持久化功能!
什么是RDB(Redis Database)
??? RDB方式的持久化是Redis數(shù)據(jù)庫(kù)默認(rèn)的持久化機(jī)制,是保證redis中數(shù)據(jù)可靠性的方式之一,這種方式可以按照一定的時(shí)間周期策略把內(nèi)存中的數(shù)據(jù)以快照(二進(jìn)制數(shù)據(jù))的形式保存到磁盤(pán)文件中,即快照存儲(chǔ)。對(duì)應(yīng)產(chǎn)生的數(shù)據(jù)文件為dump.rdb。
持久化快照保存過(guò)程
??? 在指定的時(shí)間間隔內(nèi)將內(nèi)存中的數(shù)據(jù)集快照寫(xiě)入磁盤(pán),過(guò)后會(huì)直接將快照文件讀到內(nèi)存里。(過(guò)程圖如下) 1、 Redis會(huì)單獨(dú)創(chuàng)建(fork)一個(gè)子進(jìn)程來(lái)進(jìn)行持久化; 2、Redis會(huì)先將數(shù)據(jù)寫(xiě)入到一個(gè)臨時(shí)文件中; 3、帶持久化過(guò)程都結(jié)束了,再用這個(gè)臨時(shí)文件替換上次持久化好的文件。 ??? 整個(gè)過(guò)程中,主進(jìn)程是不進(jìn)行任何IO操作的。這就確保了極高的性能。RDB的缺點(diǎn)是最后一次持久化后的數(shù)據(jù)可能丟失。 優(yōu)點(diǎn) 1、適合大規(guī)模的數(shù)據(jù)恢復(fù)。 2、對(duì)數(shù)據(jù)的完整性要求不高。 缺點(diǎn) 1、需要一定的時(shí)間間隔來(lái)實(shí)現(xiàn)進(jìn)程操作,如果Redis意外宕機(jī)了,這最后一次的修改數(shù)據(jù)就沒(méi)有了。 2、fork進(jìn)程的時(shí)候,會(huì)占用一定的內(nèi)存空間。
什么是AOF(Append Only File)
??? Redis中AOF方式的持久化是將Redis收到的每一個(gè)寫(xiě)命令都追加到磁盤(pán)文件的最后,類似于MySQL的binlog。當(dāng)Redis重啟時(shí),會(huì)重新執(zhí)行文件中保存的寫(xiě)命令,然后在內(nèi)存中重建整個(gè)數(shù)據(jù)庫(kù)的內(nèi)容。 ??? AOF 持久化默認(rèn)是關(guān)閉的,可以通過(guò)配置appendonly yes 開(kāi)啟。當(dāng) AOF 持久化功能打開(kāi)后,服務(wù)器在執(zhí)行完一個(gè)寫(xiě)命令之后,會(huì)將被執(zhí)行的寫(xiě)命令追加到服務(wù)器端 aof 緩沖區(qū)(aof_buf)的末尾,然后再將 aof_buf 中的內(nèi)容寫(xiě)到磁盤(pán)。
AOF持久化過(guò)程
??? 以日志的形式來(lái)記錄每個(gè)寫(xiě)操作,將Redis執(zhí)行過(guò)的所有指令記錄下來(lái)(讀操作不記錄),只許追加文件但不可以改寫(xiě)文件,Redis啟動(dòng)之初會(huì)讀取該文件重新構(gòu)建數(shù)據(jù),換言之,Redis重啟的話就會(huì)根據(jù)日志文件的內(nèi)容將寫(xiě)指令從前到后執(zhí)行一次以完成數(shù)據(jù)的恢復(fù)工作。(過(guò)程如下圖) 優(yōu)點(diǎn) 1、每一次修改都同步,文件的完整性會(huì)更好。 2、每秒同步一次,可能會(huì)丟失一秒的數(shù)據(jù)。 3、從不同步,效率最高。 缺點(diǎn) 1、相對(duì)數(shù)據(jù)文件來(lái)說(shuō),AOF遠(yuǎn)遠(yuǎn)大于RDB,修復(fù)的速度也比RDB慢。 2、AOF運(yùn)行效率也要比RDB慢,所以我們Redis默認(rèn)的配置就是RDB持久化。
七、Redis主從復(fù)制
??? 主從復(fù)制,是指將一臺(tái)Redis服務(wù)器的數(shù)據(jù)復(fù)制到其他的Redis服務(wù)器。前者稱為主節(jié)點(diǎn)(master/leader),后者稱為從節(jié)點(diǎn)(slave/follower);數(shù)據(jù)的復(fù)制是單向的,只能由主節(jié)點(diǎn)到從節(jié)點(diǎn)。master以寫(xiě)為主,slave以讀為主。 默認(rèn)情況下,每臺(tái)Redis服務(wù)器都是主節(jié)點(diǎn); 且一個(gè)主節(jié)點(diǎn)可以有多個(gè)從節(jié)點(diǎn)(或者沒(méi)有從節(jié)點(diǎn)),但一個(gè)從節(jié)點(diǎn)只能有一個(gè)主節(jié)點(diǎn)。 主從復(fù)制的作用主要包括:
數(shù)據(jù)冗余:主從復(fù)制實(shí)現(xiàn)了數(shù)據(jù)的熱備份,是持久化之外的一種數(shù)據(jù)冗余方式。故障恢復(fù):當(dāng)主節(jié)點(diǎn)出現(xiàn)問(wèn)題時(shí),可以由從節(jié)點(diǎn)提供服務(wù),實(shí)現(xiàn)快速的故障恢復(fù);實(shí)際上是一種服務(wù)的冗余。負(fù)載均衡:在主從復(fù)制的基礎(chǔ)上,配合讀寫(xiě)分離,可以由主節(jié)點(diǎn)提供寫(xiě)服務(wù),由從節(jié)點(diǎn)提供讀服務(wù)(即寫(xiě)Redis數(shù)據(jù)時(shí)應(yīng)用連接主節(jié)點(diǎn),讀Redis數(shù)據(jù)時(shí)應(yīng)用連接從節(jié)點(diǎn)),分擔(dān)服務(wù)器負(fù)載;尤其是在寫(xiě)少讀多的場(chǎng)景下,通過(guò)多個(gè)從節(jié)點(diǎn)分擔(dān)讀負(fù)載,可以大大提高Redis服務(wù)器的并發(fā)量。高可用(集群)基石:除了上述作用以外,主從復(fù)制還是哨兵和集群能夠?qū)嵤┑幕A(chǔ),因此說(shuō)主從復(fù)制是Redis高可用的基礎(chǔ)。
一般來(lái)說(shuō),要將Redis運(yùn)用于工程項(xiàng)目中,只使用一臺(tái)Redis是萬(wàn)萬(wàn)不行的(因?yàn)榭赡軙?huì)出現(xiàn)宕機(jī)的情況),原因如下: 1、從結(jié)構(gòu)上,單個(gè)Redis服務(wù)器會(huì)發(fā)生單點(diǎn)故障,并且一臺(tái)服務(wù)器需要處理所有的請(qǐng)求負(fù)載,壓力較大。 2、從容量上,單個(gè)Redis服務(wù)器內(nèi)存容量有限,就算一臺(tái)Redis服務(wù)器內(nèi)容容量為256G,也不能將所有內(nèi)存用作Redis存儲(chǔ)內(nèi)存,一般來(lái)說(shuō),單臺(tái)Redis最大使用內(nèi)存不應(yīng)該超過(guò)20G。
復(fù)制原理
slave啟動(dòng)成功連接到master后會(huì)發(fā)送一個(gè)sync同步命名。 Master接到命令,啟動(dòng)后臺(tái)的存盤(pán)進(jìn)程,同時(shí)收集所有接收到的用于修改數(shù)據(jù)集命令,在后臺(tái)進(jìn)程執(zhí)行完畢之后,master將傳送整個(gè)數(shù)據(jù)文件到slave,并完成一次完全同步。 全量復(fù)制: 而slave服務(wù)在接收到數(shù)據(jù)文件到slave,并完成一次完全同步。 增量復(fù)制: master繼續(xù)將新的所有手機(jī)到的修改命名一次傳給slave,完成同步。 但是只要是重新連接master,一次完全同步(全量復(fù)制)將被自動(dòng)執(zhí)行!我們的數(shù)據(jù)一定可以在從機(jī)中看到!
哨兵模式
概述
?? ? 主從切換技術(shù)的方法是:當(dāng)主服務(wù)器宕機(jī)后,需要手動(dòng)把一臺(tái)從服務(wù)器切換為主服務(wù)器,這就需要人工干預(yù),費(fèi)事費(fèi)力,還會(huì)造成一段時(shí)間內(nèi)服務(wù)不可用。這不是一種推薦的方式,更多時(shí)候,我們優(yōu)先考慮哨兵模式。Redis從2.8開(kāi)始正式提供了Sentinel(哨兵)架構(gòu)來(lái)解決這個(gè)問(wèn)題。 ?? ? 謀朝篡位的自動(dòng)版,能夠后臺(tái)監(jiān)控主機(jī)是否故障,如果故障了根據(jù)投票數(shù)自動(dòng)將從庫(kù)轉(zhuǎn)換為主庫(kù)。 ?? ? 哨兵模式是一種特殊的模式,首先Redis提供了哨兵的命令,哨兵是一個(gè)獨(dú)立的進(jìn)程,作為進(jìn)程,它會(huì)獨(dú)立運(yùn)行。其原理是哨兵通過(guò)發(fā)送命令,等待Redis服務(wù)器響應(yīng),從而監(jiān)控運(yùn)行的多個(gè)Redis實(shí)例。 這里的哨兵有兩個(gè)作用
通過(guò)發(fā)送命令,讓Redis服務(wù)器返回監(jiān)控其運(yùn)行狀態(tài),包括主服務(wù)器和從服務(wù)器。當(dāng)哨兵監(jiān)測(cè)到master宕機(jī),會(huì)自動(dòng)將slave切換成master,然后通過(guò)發(fā)布訂閱模式通知其他的從服務(wù)器,修改配置文件,讓它們切換主機(jī)。
然而一個(gè)哨兵進(jìn)程對(duì)Redis服務(wù)器進(jìn)行監(jiān)控,可能會(huì)出現(xiàn)問(wèn)題,為此,我們可以使用多個(gè)哨兵進(jìn)行監(jiān)控。各個(gè)哨兵之間還會(huì)進(jìn)行監(jiān)控,這樣就形成了多哨兵模式。 ?? ? 假設(shè)主服務(wù)器宕機(jī),哨兵1先檢測(cè)到這個(gè)結(jié)果,系統(tǒng)并不會(huì)馬上進(jìn)行failover過(guò)程,僅僅是哨兵1主觀的認(rèn)為主服務(wù)器不可用,這個(gè)現(xiàn)象成為主觀下線。當(dāng)后面的哨兵也檢測(cè)到主服務(wù)器不可用,并且數(shù)量達(dá)到一定值時(shí),那么哨兵之間就會(huì)進(jìn)行一次投票,投票的結(jié)果由一個(gè)哨兵發(fā)起,進(jìn)行failover[故障轉(zhuǎn)移]操作。切換成功后,就會(huì)通過(guò)發(fā)布訂閱模式,讓各個(gè)哨兵把自己監(jiān)控的從服務(wù)器實(shí)現(xiàn)切換主機(jī),這個(gè)過(guò)程稱為客觀下線。
優(yōu)缺點(diǎn)
優(yōu)點(diǎn): 1、哨兵集群,基于主從復(fù)制模式,所有的主從配置優(yōu)點(diǎn),它全有 2、主從可以切換,故障可以轉(zhuǎn)移,系統(tǒng)的可用性就會(huì)更好 3、哨兵模式就是主從模式的升級(jí),手動(dòng)到自動(dòng),更加健壯!
缺點(diǎn): 1、Redis 不好啊在線擴(kuò)容的,集群容量一旦到達(dá)上限,在線擴(kuò)容就十分麻煩! 2、實(shí)現(xiàn)哨兵模式的配置其實(shí)是很麻煩的,里面有很多選擇!
八、Redis緩存穿透,擊穿和雪崩
緩存穿透
概念
緩存穿透的概念很簡(jiǎn)單,用戶想要查詢一個(gè)數(shù)據(jù),發(fā)現(xiàn)redis內(nèi)存數(shù)據(jù)庫(kù)沒(méi)有,也就是緩存沒(méi)有命中,于是向持久層數(shù)據(jù)庫(kù)查詢。發(fā)現(xiàn)也沒(méi)有,于是本次查詢失敗。當(dāng)用戶很多的時(shí)候,緩存都沒(méi)有命中(秒 殺?。?,于是都去請(qǐng)求了持久層數(shù)據(jù)庫(kù)。這會(huì)給持久層數(shù)據(jù)庫(kù)造成很大的壓力,這時(shí)候就相當(dāng)于出現(xiàn)了緩存穿透。
解決方案
布隆過(guò)濾器 ?? ? 布隆過(guò)濾器是一種數(shù)據(jù)結(jié)構(gòu),對(duì)所有可能查詢的參數(shù)以hash形式存儲(chǔ),在控制層先進(jìn)行校驗(yàn),不符合則丟棄,從而避免了對(duì)底層存儲(chǔ)系統(tǒng)的查詢壓力; 緩存空對(duì)象 ?? ? 當(dāng)存儲(chǔ)層不命中后,即使返回的空對(duì)象也將其緩存起來(lái),同時(shí)會(huì)設(shè)置一個(gè)過(guò)期時(shí)間,之后再訪問(wèn)這個(gè)數(shù)據(jù)將會(huì)從緩存中獲取,保護(hù)了后端數(shù)據(jù)源; 但是這種方法會(huì)存在兩個(gè)問(wèn)題: 1、如果空值能夠被緩存起來(lái),這就意味著緩存需要更多的空間存儲(chǔ)更多的鍵,因?yàn)檫@當(dāng)中可能會(huì)有很多的空值的鍵; 2、即使對(duì)空值設(shè)置了過(guò)期時(shí)間,還是會(huì)存在緩存層和存儲(chǔ)層的數(shù)據(jù)會(huì)有一段時(shí)間窗口的不一致,這對(duì)于需要保持一致性的業(yè)務(wù)會(huì)有影響。
緩存擊穿
概述
?? ? 這里需要注意和緩存擊穿的區(qū)別,緩存擊穿,是指一個(gè)key非常熱點(diǎn),在不停的扛著大并發(fā),大并發(fā)集中對(duì)這一個(gè)點(diǎn)進(jìn)行訪問(wèn),當(dāng)這個(gè)key在失效的瞬間,持續(xù)的大并發(fā)就穿破緩存,直接請(qǐng)求數(shù)據(jù)庫(kù),就像在一個(gè)屏障上鑿開(kāi)了一個(gè)洞。 ?? ? 當(dāng)某個(gè)key在過(guò)期的瞬間,有大量的請(qǐng)求并發(fā)訪問(wèn),這類數(shù)據(jù)一般是熱點(diǎn)數(shù)據(jù),由于緩存過(guò)期,會(huì)同時(shí)訪問(wèn)數(shù)據(jù)庫(kù)來(lái)查詢最新數(shù)據(jù),并且回寫(xiě)緩存,會(huì)導(dǎo)使數(shù)據(jù)庫(kù)瞬間壓力過(guò)大。
解決方案
設(shè)置熱點(diǎn)數(shù)據(jù)永不過(guò)期 ?? ? 從緩存層面來(lái)看,沒(méi)有設(shè)置過(guò)期時(shí)間,所以不會(huì)出現(xiàn)熱點(diǎn) key 過(guò)期后產(chǎn)生的問(wèn)題。 加互斥鎖 ?? ? 分布式鎖:使用分布式鎖,保證對(duì)于每個(gè)key同時(shí)只有一個(gè)線程去查詢后端服務(wù),其他線程沒(méi)有獲得分布式鎖的權(quán)限,因此只需要等待即可。這種方式將高并發(fā)的壓力轉(zhuǎn)移到了分布式鎖,因此對(duì)分布式鎖的考驗(yàn)很大。
緩存雪崩
概念
?? ? 緩存雪崩,是指在某一個(gè)時(shí)間段,緩存集中過(guò)期失效。Redis 宕機(jī)!
解決方案
redis高可用 ?? ? 這個(gè)思想的含義是,既然redis有可能掛掉,那我多增設(shè)幾臺(tái)redis,這樣一臺(tái)掛掉之后其他的還可以繼續(xù)工作,其實(shí)就是搭建的集群。(異地多活?。?限流降級(jí) ?? ? 這個(gè)解決方案的思想是,在緩存失效后,通過(guò)加鎖或者隊(duì)列來(lái)控制讀數(shù)據(jù)庫(kù)寫(xiě)緩存的線程數(shù)量。比如對(duì)某個(gè)key只允許一個(gè)線程查詢數(shù)據(jù)和寫(xiě)緩存,其他線程等待。 數(shù)據(jù)預(yù)熱 ?? ? 數(shù)據(jù)加熱的含義就是在正式部署之前,我先把可能的數(shù)據(jù)先預(yù)先訪問(wèn)一遍,這樣部分可能大量訪問(wèn)的數(shù)據(jù)就會(huì)加載到緩存中。在即將發(fā)生大并發(fā)訪問(wèn)前手動(dòng)觸發(fā)加載緩存不同的key,設(shè)置不同的過(guò)期時(shí)間,讓緩存失效的時(shí)間點(diǎn)盡量均勻。
總結(jié)
?? ? 這以上大部分是狂神視頻里面的內(nèi)容,還有一小部分是我對(duì)Redis粗淺的認(rèn)識(shí),如有錯(cuò)誤,麻煩各位大佬在評(píng)論區(qū)指出,謝謝。
提示:想要轉(zhuǎn)載,請(qǐng)私信本作者,經(jīng)本人同意后,方可轉(zhuǎn)載。謝謝??!
柚子快報(bào)邀請(qǐng)碼778899分享:數(shù)據(jù)庫(kù) nosql Redis
推薦鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。