Redis:熱點(diǎn)key解決方案

什么是熱點(diǎn)key?

對于web應(yīng)用來說,用戶消費(fèi)的數(shù)據(jù)遠(yuǎn)遠(yuǎn)大于生產(chǎn)的數(shù)據(jù),大多人使用都只是進(jìn)行瀏覽,少數(shù)的人才會(huì)進(jìn)行評論。對于web服務(wù)來說,某些熱門的內(nèi)容,讀請求的量級可能是非常大的,數(shù)據(jù)庫無法支持這么高并發(fā)的請求,基本都會(huì)使用Redis集群做緩存,但是如果如果熱點(diǎn)數(shù)據(jù)的請求量過大,導(dǎo)致熱點(diǎn)key所在Redis節(jié)點(diǎn)無法支撐,這種情況就需要采用額外的措施解決。當(dāng)然Redis的性能還是非常好的,大多數(shù)業(yè)務(wù)量級都可以撐住,除非業(yè)務(wù)體量很大。

解決方案

服務(wù)端緩存

這種方式就是將熱點(diǎn)數(shù)據(jù)同時(shí)緩存在服務(wù)器的內(nèi)存中,增加一級緩存,如果數(shù)據(jù)在內(nèi)存緩存中,就直接讀,不用去請求Redis。如果數(shù)據(jù)沒有再請求Redis,獲取到數(shù)據(jù)再寫入內(nèi)存緩存中。這樣就大大減少了Redis的壓力,而且直接讀內(nèi)存的速度會(huì)更快。

備份熱點(diǎn)key

為了不讓熱點(diǎn)key只請求到某一個(gè)redis節(jié)點(diǎn),可以在熱點(diǎn)key后面加一個(gè)隨機(jī)數(shù),這樣熱點(diǎn)數(shù)據(jù)可能就hash到不同的槽位,從而請求到不同的Redis節(jié)點(diǎn),相當(dāng)于一個(gè)key有了多個(gè)不同的備份,分散在多個(gè)Redis節(jié)點(diǎn)上。

參考

【1】關(guān)于Redis熱點(diǎn)key的一些思考

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容