景)
一般分為兩種緩存和分布式鎖。緩存包含穿透、擊穿、雪崩、雙寫一致、持久化、數(shù)據(jù)過期、淘汰策略分布式鎖包含setnx、redisson一、緩存穿透緩存穿透概念查詢一個(gè)不存在的數(shù)據(jù)mysql查詢不到數(shù)據(jù)也不會(huì)直接寫入緩存就會(huì)導(dǎo)致每次請(qǐng)求都查數(shù)據(jù)庫(kù)這種情況下數(shù)據(jù)庫(kù)需要處理這個(gè)請(qǐng)求并返回結(jié)果。如果請(qǐng)求頻繁數(shù)據(jù)庫(kù)的負(fù)載就會(huì)增加甚至可能導(dǎo)致數(shù)據(jù)庫(kù)崩潰。解決方案一緩存空數(shù)據(jù)緩存空數(shù)據(jù) 查詢返回的數(shù)據(jù)為空仍把這個(gè)空結(jié)果進(jìn)行緩存優(yōu)點(diǎn)簡(jiǎn)單缺點(diǎn)消耗內(nèi)存可能會(huì)發(fā)生不一致得問題如果數(shù)據(jù)庫(kù)中有值了但redis中沒有就會(huì)不一致解決方案二布隆過濾器布隆過濾器:在我們進(jìn)行緩存預(yù)熱的時(shí)候需要給布隆過濾器中添加數(shù)據(jù)若有請(qǐng)求時(shí)先請(qǐng)求布隆過濾器判斷請(qǐng)求得id或其他 是否存在若存在去查redis若不存在直接返回不存在。bitmap(位圖)相當(dāng)于是一個(gè)以bit位為單位得數(shù)組數(shù)組中每個(gè)單元只能存儲(chǔ)二進(jìn)制數(shù)0或1布隆過濾器作用可以用于檢索一個(gè)元素是否在一個(gè)集合中優(yōu)點(diǎn)內(nèi)存占用較少?zèng)]有多余得key缺點(diǎn)實(shí)現(xiàn)復(fù)雜也可能存在誤判緩存穿透原因1.緩存未命中當(dāng)請(qǐng)求的數(shù)據(jù)不存在于緩存中時(shí)緩存系統(tǒng)無法提供響應(yīng)導(dǎo)致請(qǐng)求直接訪問數(shù)據(jù)庫(kù)。2.緩存失效緩存中的數(shù)據(jù)過期或被清除導(dǎo)致后續(xù)請(qǐng)求無法命中緩存直接訪問數(shù)據(jù)庫(kù)。3.緩存雪崩大量緩存同時(shí)失效導(dǎo)致請(qǐng)求全部訪問數(shù)據(jù)庫(kù)形成緩存穿透。緩存穿透影響1.增加數(shù)據(jù)庫(kù)壓力緩存穿透會(huì)導(dǎo)致數(shù)據(jù)庫(kù)訪問量激增增加數(shù)據(jù)庫(kù)負(fù)載甚至可能導(dǎo)致數(shù)據(jù)庫(kù)崩潰。2.降低系統(tǒng)性能頻繁的數(shù)據(jù)庫(kù)訪問會(huì)導(dǎo)致系統(tǒng)響應(yīng)時(shí)間延長(zhǎng)降低系統(tǒng)性能。3.增加運(yùn)維成本緩存穿透需要額外的數(shù)據(jù)庫(kù)維護(hù)和優(yōu)化增加運(yùn)維成本。緩存穿透預(yù)防措施1.限制查詢頻率對(duì)查詢操作進(jìn)行頻率限制避免惡意攻擊。2.使用緩存預(yù)熱在系統(tǒng)啟動(dòng)時(shí)將熱點(diǎn)數(shù)據(jù)加載到緩存中減少查詢數(shù)據(jù)庫(kù)的次數(shù)。緩存穿透的檢測(cè)方法監(jiān)控?cái)?shù)據(jù)庫(kù)訪問量通過監(jiān)控?cái)?shù)據(jù)庫(kù)訪問量發(fā)現(xiàn)異常情況。分析日志分析系統(tǒng)日志發(fā)現(xiàn)緩存穿透的請(qǐng)求。緩存穿透的優(yōu)化策略使用分布式緩存將緩存部署在多個(gè)節(jié)點(diǎn)上提高緩存系統(tǒng)的可用性和性能。使用緩存集群將緩存集群部署在多個(gè)服務(wù)器上提高緩存系統(tǒng)的擴(kuò)展性和性能。面試題面試官:什么是緩存穿透?怎么解決?緩存穿透是指查詢一個(gè)一定不存在的數(shù)據(jù)。如果從存儲(chǔ)層查不到數(shù)據(jù)則不寫入緩存這將導(dǎo)致這個(gè)不存在的數(shù)據(jù)每次請(qǐng)求都要到DB去查詢可能導(dǎo)致DB掛掉。這種情況大概率是遭到了攻擊。解決方案的話我們通常都會(huì)用布隆過濾器來解決它面試官:你能介紹一下布隆過濾器嗎?是這樣~布隆過濾器主要是用于檢索一個(gè)元素是否在一個(gè)集合中。我們當(dāng)時(shí)使用的是redisson實(shí)現(xiàn)的布隆過濾它的底層主要是先去初始化一個(gè)比較大數(shù)組里面存放的二進(jìn)制0或1。在一開始都是0當(dāng)一個(gè)key來了之后經(jīng)過3次hash計(jì)算模于數(shù)組長(zhǎng)度找到數(shù)據(jù)的下標(biāo)然后把數(shù)組中原來的0改為1這樣的話三個(gè)數(shù)組的位置就能標(biāo)明一個(gè)key的存在。查找的過程也是一樣的。當(dāng)然是有缺點(diǎn)的布隆過濾器有可能會(huì)產(chǎn)生一定的誤判。我們一般可以設(shè)置這個(gè)誤判率大概不會(huì)超過5%其實(shí)這個(gè)誤判是必然存在的要不就得增加數(shù)組的長(zhǎng)度其實(shí)已經(jīng)算是很劃分了5%以內(nèi)的誤判率一般項(xiàng)目也能接受不至于高并發(fā)下壓倒數(shù)據(jù)庫(kù)。二、緩存擊穿緩存擊穿概念給某一個(gè)key設(shè)置了過期時(shí)間當(dāng)key過期的時(shí)候恰好這時(shí)間點(diǎn)對(duì)這個(gè)key有大量得并發(fā)請(qǐng)求過來這些并發(fā)請(qǐng)求會(huì)瞬間把數(shù)據(jù)庫(kù)DB壓垮。解決方案一互斥鎖(能保證數(shù)據(jù)的強(qiáng)一致性性能差)解決方案二邏輯過期(有限保證高可用性能優(yōu)不能保證數(shù)據(jù)絕對(duì)一致)面試問題面試官:什么是緩存擊穿?怎么解決?候選人:緩存擊穿的意思是對(duì)于設(shè)置了過期時(shí)間的key緩存在某個(gè)時(shí)間點(diǎn)過期的時(shí)候恰好這時(shí)間點(diǎn)對(duì)這個(gè)Key有大量的并發(fā)請(qǐng)求過來。這些請(qǐng)求發(fā)現(xiàn)緩存過期一般都會(huì)從后端DB加載數(shù)據(jù)并回設(shè)到緩存這個(gè)時(shí)候大并發(fā)的請(qǐng)求可能會(huì)瞬間把DB壓垮。解決方案有兩種方式:第一可以使用互斥鎖:當(dāng)緩存失效時(shí)不立即去load db先使用如Redis 的setnx去設(shè)置一個(gè)互斥鎖.當(dāng)操作成功返回時(shí)再進(jìn)行l(wèi)oaddb的操作并回設(shè)緩存否則重試get緩存的方法第二種方案可以設(shè)置當(dāng)前key邏輯過期。大概是思路如下:1.在設(shè)置key的時(shí)候設(shè)置一個(gè)過期時(shí)間字段一塊存入緩存中不給當(dāng)前key設(shè)置過期時(shí)間2.當(dāng)查詢的時(shí)候。從redis取出數(shù)據(jù)后判斷時(shí)間是否過期3.如果過期則開通另外一個(gè)線程進(jìn)行數(shù)據(jù)同步當(dāng)前線程正常返回?cái)?shù)據(jù)這個(gè)數(shù)據(jù)不是最新當(dāng)然兩種方案各有利弊:如果選擇數(shù)據(jù)的強(qiáng)一致性。建議使用分布式鎖的方案性能上可能沒那么高鎖需要等也有可能產(chǎn)生死鎖的問題。如果選擇key的邏輯刪除則優(yōu)先考慮的高可用性性能比較高但是數(shù)據(jù)同步這塊做不到強(qiáng)一致。三、緩存雪崩緩存雪崩概念是指在同一時(shí)段大量的緩存key同時(shí)失效或者redis服務(wù)宕機(jī)導(dǎo)致大量請(qǐng)求到達(dá)數(shù)據(jù)庫(kù)帶來巨大壓力解決方案1.給不同的key的TTL添加隨機(jī)值2.利用redis集群提高服務(wù)的可用性哨兵模式、集群模式redis宕機(jī)方案3.給緩存業(yè)務(wù)添加降級(jí)限流策略nginx或spring cloud gateway降級(jí)策略可作為系統(tǒng)的保底策略適用于穿透、擊穿、雪崩4.給業(yè)務(wù)添加多級(jí)緩存Guava或Caffeine面試問題面試官:什么是緩存雪崩?怎么解決?候選人:緩存雪崩意思是設(shè)置緩存時(shí)采用了相同的過期時(shí)間導(dǎo)致緩存在某一時(shí)刻同時(shí)失效請(qǐng)求全部轉(zhuǎn)發(fā)到DBDB瞬時(shí)壓力過重雪崩。與緩存擊穿的區(qū)別:雪崩是很多key擊穿是某一個(gè)key緩存。解決方案主要是可以將緩存失效時(shí)間分散開比如可以在原有的失效時(shí)間基礎(chǔ)上增加一個(gè)隨機(jī)值比如1-5分鐘隨機(jī)這樣每一個(gè)緩存的過期時(shí)間的重復(fù)率就會(huì)降低就很難引發(fā)集體失效的事件。方便記憶的打油詩(shī)《緩存三兄弟》穿透無中生有key布隆過濾nul隔離。緩存擊穿過期key鎖與非期解難題。雪崩大量過期key過期時(shí)間要隨機(jī)。面試必考三兄弟可用限流來保底。四、緩存雙寫一致性redis作為緩存mysql的數(shù)據(jù)如何與redis進(jìn)行同步呢雙寫一致性概念 當(dāng)修改了數(shù)據(jù)庫(kù)的數(shù)據(jù)也要同時(shí)更新緩存的數(shù)據(jù)緩存和數(shù)據(jù)可的數(shù)據(jù)要保持一致如果需要實(shí)時(shí)的進(jìn)行數(shù)據(jù)同步為了保證數(shù)據(jù)的情義值性采用redisson提供的讀寫鎖來保證數(shù)據(jù)的同步如果實(shí)時(shí)要求性并沒有那么高可以用異步的方案同步數(shù)據(jù)為了保證強(qiáng)一致性使用讀寫操作讀操作讀數(shù)據(jù)操作緩存命中直接返回緩存未命中查詢數(shù)據(jù)庫(kù)寫入緩存設(shè)定超時(shí)時(shí)間寫操作寫數(shù)據(jù)操作延遲雙刪異步通知保證數(shù)據(jù)的最終一致性面試問題面試官:redis做為緩存mysql的數(shù)據(jù)如何與redis進(jìn)行同步呢?(雙寫一致性)候選人:嗯!就說我最近做的這個(gè)項(xiàng)目里面有xxx(根據(jù)自己的簡(jiǎn)歷上寫)的功能需要讓數(shù)據(jù)庫(kù)與redis高度保持一致因?yàn)橐髸r(shí)效性比較高我們當(dāng)時(shí)采用的讀寫鎖保證的強(qiáng)一致性。我們采用的是redisson實(shí)現(xiàn)的讀寫鎖在讀的時(shí)候添加共享鎖可以保證讀讀不互斥讀寫互斥。當(dāng)我們更新數(shù)據(jù)的時(shí)候添加排他鎖它是讀寫讀讀都互斥這樣就能保證在寫數(shù)據(jù)的問時(shí)是不會(huì)讓其他線程讀數(shù)據(jù)的避免了臟數(shù)據(jù)。這里面需要注意的是讀方法和寫方法上需要使用同一把鎖才行。面試官:那這個(gè)排他鎖是如何保證讀寫、讀讀互斥的呢?候選人:其實(shí)排他鎖底層使用也是setnx保證了同時(shí)只能有一個(gè)線程操作鎖住的方法面試官:你聽說過延時(shí)雙刪嗎?為什么不用它呢?候選人:延遲雙刪如果是寫操作我們先把緩存中的數(shù)據(jù)刪除然后更新數(shù)據(jù)庫(kù)最后再延時(shí)刪除緩存中的數(shù)據(jù)其中這個(gè)延時(shí)多久不太好確定在延時(shí)的過程中可能會(huì)出現(xiàn)臟數(shù)據(jù)并不能保證強(qiáng)一致性所以沒有采用它。|面試官:redis做為緩存mysql的數(shù)據(jù)如何與redis進(jìn)行同步呢?(雙寫一致性)候選人:嗯!就說我最近做的這個(gè)項(xiàng)目里面有xxxX(根據(jù)自己的簡(jiǎn)歷上寫)的功能數(shù)據(jù)回步可以有一定的延時(shí)《符合大部分業(yè)務(wù))我們當(dāng)時(shí)采用的阿里的canal組件實(shí)現(xiàn)數(shù)據(jù)網(wǎng)步:不需要更改業(yè)務(wù)代碼部署一個(gè)canal服務(wù)。canal服務(wù)把自己偽裝成mysql的一個(gè)從節(jié)點(diǎn)當(dāng)mysql數(shù)據(jù)更新以后canal會(huì)讀取binlog數(shù)據(jù)然后在通過canal的客戶端獲取到數(shù)據(jù)更新緩存即可。五、redis緩存的持久化分為兩個(gè)RDB和AOFRDB全稱Redis Database Backup file(Redis數(shù)據(jù)備份文件)也被叫做Redis數(shù)據(jù)快照。簡(jiǎn)單來說就是把內(nèi)存中的所有數(shù)據(jù)都記錄到磁盤中。當(dāng)Redis實(shí)例故障重啟后從磁盤讀取快照文件恢復(fù)數(shù)據(jù)RDB執(zhí)行原理bgsave開始時(shí)會(huì)fork克隆主進(jìn)程得到子進(jìn)程子進(jìn)程共享主進(jìn)程的內(nèi)存數(shù)據(jù)。完成fork后讀取內(nèi)存數(shù)據(jù)并寫入RDB文件。fork采用的是copy-on-write技術(shù):當(dāng)主進(jìn)程執(zhí)行讀操作時(shí)訪問共享內(nèi)存;當(dāng)主進(jìn)程執(zhí)行寫操作時(shí)則會(huì)拷貝一份數(shù)據(jù)執(zhí)行寫操作。AOF全稱為Append Only File追加文件。redis處理每一個(gè)寫命令都會(huì)記錄在AOF文件可以看作是命令日志文件AOF默認(rèn)是關(guān)閉的需要修改redis.conf配置文件來開啟AOFAOF的命令記錄的頻率也可以通過redis.conf文件配置因?yàn)槭怯涗浢預(yù)OF文件會(huì)比RDB文件大的多。而且AOF會(huì)記錄對(duì)同一個(gè)key的多次寫操作但只有最后一次寫操作才有意義。通過執(zhí)行bgrewriteaof命令可以讓AOF文件執(zhí)行重寫功能用最少的命令達(dá)到相同效果。redis也會(huì)在觸發(fā)閾值時(shí)自動(dòng)去重寫AOF文件。閾值也可以在redis.conf中配置RDB與AOF對(duì)比各有優(yōu)缺點(diǎn)如果對(duì)數(shù)據(jù)安全性要求較高在實(shí)際開發(fā)中往往會(huì)結(jié)合兩者來使用面試問題面試官:redis做為緩存數(shù)據(jù)的持久化是怎么做的?候選人:在Redis中提供了兩種數(shù)據(jù)持久化的方式:1、RDB 2、AOF面試官:這兩種持久化方式有什么區(qū)別呢?候選人:RDB是一個(gè)快照文件它是把redis內(nèi)存存儲(chǔ)的數(shù)據(jù)寫到磁盤上當(dāng)redis實(shí)例宕機(jī)恢復(fù)數(shù)據(jù)的時(shí)候方便從RDB的快照文件中恢復(fù)數(shù)據(jù)。AOF的含義是追加文件當(dāng)redis操作寫命令的時(shí)候都會(huì)存儲(chǔ)這個(gè)文件中當(dāng)redis實(shí)例宕機(jī)恢復(fù)數(shù)據(jù)的時(shí)候會(huì)從這個(gè)文件中再次執(zhí)行一遍命令來恢復(fù)數(shù)據(jù)面試官:這兩種方式哪種恢復(fù)的比較快呢?候選人:RDB因?yàn)槭嵌M(jìn)制文件在保存的時(shí)候體積也是比較小的它恢復(fù)的比較快但是它有可能會(huì)丟數(shù)據(jù)我們通常在項(xiàng)目中也會(huì)使用AOF來恢復(fù)數(shù)據(jù)雖然AOF恢復(fù)的速度慢一些但是它丟數(shù)據(jù)的風(fēng)險(xiǎn)要小很多在AOF文件中可以設(shè)置刷盤策略我們當(dāng)時(shí)設(shè)置的就是每秒批量寫入一次命令六、數(shù)據(jù)過期策略redis的key過期后會(huì)立即刪除嗎數(shù)據(jù)過期策略概念Redis對(duì)數(shù)據(jù)設(shè)置數(shù)據(jù)的有效時(shí)間數(shù)據(jù)過期以后就需要將數(shù)據(jù)從內(nèi)存中刪除掉??梢园凑詹煌囊?guī)則進(jìn)行刪除這種刪除規(guī)則就被稱之為數(shù)據(jù)的刪除策略。Redis的過期刪除策略:惰性刪除定期刪除兩種策略進(jìn)行配合使用兩種策略1.惰性刪除2.定期刪除惰性刪除:設(shè)置該key過期時(shí)間后我們不去管它當(dāng)需要該key時(shí)我們?cè)跈z查其是否過期如果過期我們就刪掉它反之返回該key優(yōu)點(diǎn):對(duì)CPU友好只會(huì)在使用該key時(shí)才會(huì)進(jìn)行過期檢查對(duì)于很多用不到的key不用浪費(fèi)時(shí)間進(jìn)行過期檢查缺點(diǎn):對(duì)內(nèi)存不友好如果一個(gè)key已經(jīng)過期但是一直沒有使用那么該key就會(huì)一直存在內(nèi)存中內(nèi)存永遠(yuǎn)不會(huì)釋放定期刪除:每隔一段時(shí)間我們就對(duì)一些key進(jìn)行檢查刪除里面過期的key(從一定數(shù)量的數(shù)據(jù)庫(kù)中取出一定數(shù)量的隨機(jī)key進(jìn)行檢查并刪除其中的過期key)。定期清理有兩種模式:SLOW模式是定時(shí)任務(wù)執(zhí)行頻率默認(rèn)為10hz每次不超過25ms,以通過修改配置文件redis.conf 的hz選項(xiàng)來調(diào)整這個(gè)次數(shù)FAST模式執(zhí)行頻率不固定但兩次間隔不低于2ms每次耗時(shí)不超過1ms優(yōu)點(diǎn):可以通過限制刪除操作執(zhí)行的時(shí)長(zhǎng)和頻率來減少刪除操作對(duì)CPU的影響。另外定期刪除也能有效釋放過期鍵占用的內(nèi)存。缺點(diǎn):難以確定刪除操作執(zhí)行的時(shí)長(zhǎng)和頻率。面試問題面試官:Redis的數(shù)據(jù)過期策略有哪些?候選人:在redis中提供了兩種數(shù)據(jù)過期刪除策略第一種是惰性刪除在設(shè)置該key過期時(shí)間后我們不去管它當(dāng)需要該key時(shí)我們?cè)跈z查其是否過期如果過期我們就刪掉它反之返回該key。第二種是定期刪除就是說每隔一段時(shí)間我們就對(duì)一些key進(jìn)行檢查刪除里面過期的key定期清理的兩種模式:SLOW模式是定時(shí)任務(wù)執(zhí)行頻率默認(rèn)為10hz每次不超過25ms以通過修改配置文件redis.confFAST模式執(zhí)行頻率不固定每次事件循環(huán)會(huì)嘗試執(zhí)行但兩次間隔不低于2ms每次耗時(shí)不超過lms的hz選項(xiàng)來調(diào)整這個(gè)次數(shù)Redis的過期刪除策略:惰性刪除定期刪除兩種策略進(jìn)行配合使用七、數(shù)據(jù)淘汰策略緩存過多內(nèi)存有限內(nèi)存被占滿了怎么辦數(shù)據(jù)的淘汰策略:當(dāng)Redis中的內(nèi)存不夠用時(shí)此時(shí)在向Redis中添加新的key那么Redis就會(huì)按照某一種規(guī)則將內(nèi)存中的數(shù)據(jù)刪除掉這種數(shù)據(jù)的刪除規(guī)則被稱之為內(nèi)存的淘汰策略。LRU(Least Recently Used)最近最少使用。用當(dāng)前時(shí)間減去最后一次訪問時(shí)間這個(gè)值越大則淘汰優(yōu)先級(jí)越高。LFU(Least Frequently Used)最少頻率使用。會(huì)統(tǒng)計(jì)每個(gè)key的訪問頻率值越小淘汰優(yōu)先級(jí)越高。Redis支持8種不同策略來選擇要?jiǎng)h除的key:noeviction:不淘汰任何key但是內(nèi)存滿時(shí)不允許寫入新數(shù)據(jù)默認(rèn)就是這種策略。volatile-ttl:對(duì)設(shè)置了TTL的key比較key的剩余TTL值TTL越小越先被淘汰allkeys-random:對(duì)全體key隨機(jī)進(jìn)行淘汰。volatile-random:對(duì)設(shè)置了TTL的key隨機(jī)進(jìn)行淘汰。allkeys-Iru:對(duì)全體key基于LRU算法進(jìn)行淘汰volatile-Iru:對(duì)設(shè)置了TTL的key基于LRU算法進(jìn)行淘汰allkeys-Ifu:對(duì)全體key基于LFU算法進(jìn)行淘汰volatile-Ifu:對(duì)設(shè)置了TTL的key基于LFU算法進(jìn)行淘汰使用建議1.優(yōu)先使用allkeys-Iru策略。充分利用LRU算法的優(yōu)勢(shì)把最近最常訪問的數(shù)據(jù)留在緩存中。如果業(yè)務(wù)有明顯的冷熱數(shù)據(jù)區(qū)分建議使用。2.如果業(yè)務(wù)中數(shù)據(jù)訪問頻率差別不大沒有明顯冷熱數(shù)據(jù)區(qū)分建議使用allkeys-random隨機(jī)選擇淘汰。3.如果業(yè)務(wù)中有置頂?shù)男枨罂梢允褂胿olatile-Iru策略同時(shí)置頂數(shù)據(jù)不設(shè)置過期時(shí)間這些數(shù)據(jù)就一直不被刪除會(huì)淘汰其他設(shè)置過期時(shí)間的數(shù)據(jù)。4.如果業(yè)務(wù)中有短時(shí)高頻訪問的數(shù)據(jù)可以使用allkeys-Ifu或volatile-Ifu策略。面試問題面試官:Redis的數(shù)據(jù)淘汰策略有哪些?候選人:這個(gè)在redis中提供了很多種默認(rèn)是noeviction不刪除任何數(shù)據(jù)內(nèi)部不足直接報(bào)錯(cuò)是可以在redis的配置文件中進(jìn)行設(shè)置的里面有兩個(gè)非常重要的概念一個(gè)是LRU另外一個(gè)是LFULRU的意思就是最少最近使用用當(dāng)前時(shí)間減去最后一次訪問時(shí)間這個(gè)值越大則淘汰優(yōu)先級(jí)越高。LFU的意思是最少頻率使用。會(huì)統(tǒng)計(jì)每個(gè)key的訪問頻率值越小淘汰優(yōu)先級(jí)越高我們?cè)陧?xiàng)目設(shè)置的是allkeys-Iru挑選最近最少使用的數(shù)據(jù)淘汰把一些經(jīng)常訪問的key留在redis中面試官:數(shù)據(jù)庫(kù)有1000萬數(shù)據(jù),Redis只能緩存20w數(shù)據(jù),如何保證Redis中的數(shù)據(jù)都是熱點(diǎn)數(shù)據(jù)?候選人:可以使用alkeys-Iru(挑選最近最少使用的數(shù)據(jù)淘汰)淘汰策略那留下來的都是經(jīng)常訪問的熱點(diǎn)數(shù)據(jù)面試官:Redis的內(nèi)存用完了會(huì)發(fā)生什么?主要看數(shù)據(jù)淘汰策略是什么?如果是默認(rèn)的配置(noeviction)會(huì)直接報(bào)錯(cuò)