什么是redis雪崩(Redis面试题)
1.什么是雪崩
因?yàn)榫彺鎸映休d了大量的請(qǐng)求,有效的保護(hù)了存儲(chǔ) 層,但是如果緩存由于某些原因,整體不能夠提供服務(wù),于是所有的請(qǐng)求,就會(huì)到達(dá)存儲(chǔ)層,存儲(chǔ)層的調(diào)用量就會(huì)暴增,造成存儲(chǔ)層也會(huì)掛掉的情況。緩存雪崩的英文解釋是奔逃的野牛,指的是緩存層當(dāng)?shù)糁螅l(fā)流量會(huì)像奔騰的野牛一樣,大量后端存儲(chǔ)。
存在這種問(wèn)題的一個(gè)場(chǎng)景是:當(dāng)緩存服務(wù)器重啟或者大量緩存集中在某一個(gè)時(shí)間段失效,這樣在失效的時(shí)候,大量數(shù)據(jù)會(huì)去直接訪(fǎng)問(wèn)DB,此時(shí)給DB很大的壓力。
2.解決方法
(1)設(shè)置redis集群和DB集群的高可用,如果redis出現(xiàn)宕機(jī)情況,可以立即由別的機(jī)器頂替上來(lái)。這樣可以防止一部分的風(fēng)險(xiǎn)。
(2)使用互斥鎖
在緩存失效后,通過(guò)加鎖或者隊(duì)列來(lái)控制讀和寫(xiě)數(shù)據(jù)庫(kù)的線(xiàn)程數(shù)量。比如:對(duì)某個(gè)key只允許一個(gè)線(xiàn)程查詢(xún)數(shù)據(jù)和寫(xiě)緩存,其他線(xiàn)程等待。單機(jī)的話(huà),可以使用synchronized或者lock來(lái)解決,如果是分布式環(huán)境,可以是用redis的setnx命令來(lái)解決。
(3)不同的key,可以設(shè)置不同的過(guò)期時(shí)間,讓緩存失效的時(shí)間點(diǎn)不一致,盡量達(dá)到平均分布。
(4)永遠(yuǎn)不過(guò)期
redis中設(shè)置永久不過(guò)期,這樣就保證了,不會(huì)出現(xiàn)熱點(diǎn)問(wèn)題,也就是物理上不過(guò)期。
(5)資源保護(hù)
使用netflix的hystrix,可以做各種資源的線(xiàn)程池隔離,從而保護(hù)主線(xiàn)程池。
推薦教程: 《Redis教程》
以上就是什么是redis雪崩的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注風(fēng)君子博客其它相關(guān)文章!
總結(jié)
以上是生活随笔為你收集整理的什么是redis雪崩(Redis面试题)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: qmcflac是什么格式
- 下一篇: 链表的特点有哪些(常用的集合有哪些)