最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Redis什么是熱Key問(wèn)題以及如何解決熱Key問(wèn)題

 更新時(shí)間:2022年11月18日 15:30:16   作者:每天都要進(jìn)步一點(diǎn)點(diǎn)  
這篇文章主要介紹了Redis什么是熱Key問(wèn)題以及如何解決熱Key問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

一、什么是熱Key?

在Redis中,我們把訪問(wèn)頻率高的Key,稱(chēng)為熱Key

比如突然又幾十萬(wàn)的請(qǐng)求去訪問(wèn)redis中某個(gè)特定的Key,那么這樣會(huì)造成redis服務(wù)器短時(shí)間流量過(guò)于集中,很可能導(dǎo)致redis的服務(wù)器宕機(jī)。

那么接下來(lái)對(duì)這個(gè)Key的請(qǐng)求,都會(huì)直接請(qǐng)求到我們的后端數(shù)據(jù)庫(kù)中,數(shù)據(jù)庫(kù)性能本來(lái)就不高,這樣就可能直接壓垮數(shù)據(jù)庫(kù),進(jìn)而導(dǎo)致后端服務(wù)不可用。

二、熱Key產(chǎn)生的原因?

1、用戶(hù)消費(fèi)的數(shù)據(jù)遠(yuǎn)大于生產(chǎn)的數(shù)據(jù),如商品秒殺、熱點(diǎn)新聞、熱點(diǎn)評(píng)論等讀多寫(xiě)少的場(chǎng)景。

雙十一秒殺商品,短時(shí)間內(nèi)某個(gè)爆款商品可能被點(diǎn)擊/購(gòu)買(mǎi)上百萬(wàn)次,或者某條爆炸性新聞等被大量瀏覽,此時(shí)會(huì)造成一個(gè)較大的請(qǐng)求Redis量,這種情況下就會(huì)造成熱點(diǎn)Key問(wèn)題。

2、請(qǐng)求分片集中,超過(guò)單臺(tái)Redis服務(wù)器的性能極限。

在服務(wù)端讀數(shù)據(jù)進(jìn)行訪問(wèn)時(shí),往往會(huì)對(duì)數(shù)據(jù)進(jìn)行分片切分,例如采用固定Hash分片,hash落入同一臺(tái)redis服務(wù)器,如果瞬間訪問(wèn)量過(guò)大,超過(guò)機(jī)器瓶頸時(shí),就會(huì)導(dǎo)致熱點(diǎn) Key 問(wèn)題的產(chǎn)生。

三、熱點(diǎn)Key的危害?

1、緩存擊穿,壓垮redis服務(wù)器,導(dǎo)致大量請(qǐng)求直接發(fā)往后端服務(wù),并且DB本身性能較弱,很可能進(jìn)一步導(dǎo)致后端服務(wù)雪崩。

四、如何識(shí)別熱點(diǎn)Key?

1、憑借個(gè)人經(jīng)驗(yàn),結(jié)合業(yè)務(wù)場(chǎng)景,判斷哪些是熱Key。

比如,雙十一大促的時(shí)候,蘋(píng)果手機(jī)正在秒殺,那么我們可以判斷蘋(píng)果手機(jī)這個(gè)sku就是熱Key。

2、使用redis之前,在客戶(hù)端寫(xiě)程序統(tǒng)計(jì)上報(bào)。

修改我們的業(yè)務(wù)代碼,在操作redis之前,加入Key使用次數(shù)的統(tǒng)計(jì)邏輯,定時(shí)把收集到的數(shù)據(jù)上報(bào)到統(tǒng)一的服務(wù)進(jìn)行聚合計(jì)算,這樣我們就可以找到那些熱點(diǎn)Key。缺點(diǎn)就是對(duì)我們的業(yè)務(wù)代碼有一定的侵入性。

3、服務(wù)代理層上報(bào)。

這個(gè)要看具體公司redis集群架構(gòu)是怎么樣的,如果是在redis前面有一個(gè)代理層,那么我們可以在代理層進(jìn)行收集上報(bào),也是可以找到熱點(diǎn)Key。如下這種架構(gòu):

這種方式確定也很明顯, 每個(gè)公司的架構(gòu)不一樣,并非都有Proxy代理這一層。

4、使用redis自帶的命令。

例如monitor、redis-cli加上--hotkeys選項(xiàng)等,不過(guò)這種方式執(zhí)行起來(lái)很慢,可能會(huì)降低redis的處理請(qǐng)求的性能,慎用。

monitor命令:可以實(shí)時(shí)抓取出redis服務(wù)器接收到的命令,然后寫(xiě)代碼統(tǒng)計(jì)出熱Key,也有現(xiàn)成的分析工具可以使用。

5、redis節(jié)點(diǎn)抓包分析。

自己寫(xiě)程序監(jiān)聽(tīng)端口,解析數(shù)據(jù),進(jìn)行分析。

五、如何解決熱Key問(wèn)題?

1、Redis集群擴(kuò)容:增加分片副本,分?jǐn)偪蛻?hù)端發(fā)過(guò)來(lái)的讀請(qǐng)求;

2、使用二級(jí)緩存,即JVM本地緩存,減少Redis的讀請(qǐng)求。

例如使用Caffeine+redis 實(shí)現(xiàn)二級(jí)緩存,先從本地緩存中取,取不到再去redis中去取。當(dāng)然也可以使用其它框架,如ehcache、甚至一個(gè)HashMap都可以。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MySQL數(shù)據(jù)庫(kù)約束從入門(mén)到精通

    MySQL數(shù)據(jù)庫(kù)約束從入門(mén)到精通

    數(shù)據(jù)庫(kù)約束時(shí)數(shù)據(jù)庫(kù)中用于強(qiáng)制數(shù)據(jù)完整性的規(guī)則,確保表中數(shù)據(jù)的準(zhǔn)確性、一致性和有效性,通過(guò)限制表中數(shù)據(jù)的輸入修改和刪除行為,防止無(wú)效和不合理數(shù)據(jù)操作,本文給大家介紹MySQL數(shù)據(jù)庫(kù)約束的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧
    2025-10-10
  • 如何解決MySQL5升級(jí)為MySQL8遇到的問(wèn)題my.ini

    如何解決MySQL5升級(jí)為MySQL8遇到的問(wèn)題my.ini

    這篇文章主要介紹了如何解決MySQL5升級(jí)為MySQL8遇到的問(wèn)題my.ini,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • MySQL表LEFT JOIN左連接與RIGHT JOIN右連接的實(shí)例教程

    MySQL表LEFT JOIN左連接與RIGHT JOIN右連接的實(shí)例教程

    這篇文章主要介紹了MySQL表LEFT JOIN左連接與RIGHT JOIN右連接的實(shí)例教程,表連接操作是MySQL入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-12-12
  • Mysql計(jì)算n日留存率的實(shí)現(xiàn)

    Mysql計(jì)算n日留存率的實(shí)現(xiàn)

    本文主要介紹了Mysql計(jì)算n日留存率的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • mysql日志系統(tǒng)redo log和bin log介紹

    mysql日志系統(tǒng)redo log和bin log介紹

    這篇文章主要介紹了mysql日志系統(tǒng)redo log和bin log介紹,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • MySQL禁用InnoDB引擎的方法

    MySQL禁用InnoDB引擎的方法

    這篇文章主要介紹了MySQL禁用InnoDB引擎的方法,針對(duì)的Mysql版本是5.5和5.6,使用了兩種不同的配置文件,需要的朋友可以參考下
    2014-05-05
  • MySQL?8.0.29?安裝配置方法圖文教程(windows?zip版)

    MySQL?8.0.29?安裝配置方法圖文教程(windows?zip版)

    這篇文章主要為大家詳細(xì)介紹了windows?zip版MySQL?8.0.29?安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • java連接mysql數(shù)據(jù)庫(kù)useSSL問(wèn)題及解決

    java連接mysql數(shù)據(jù)庫(kù)useSSL問(wèn)題及解決

    文章總結(jié):通過(guò)分析錯(cuò)誤日志和配置文件,發(fā)現(xiàn)問(wèn)題由SSL相關(guān)配置引起,MySQL和proxysql的SSL配置不同導(dǎo)致連接失敗,最終通過(guò)修改JDBC?URL添加useSSL=false參數(shù),解決了連接問(wèn)題,建議使用高版本JDBC驅(qū)動(dòng),并明確配置useSSL
    2025-11-11
  • linux下指定mysql數(shù)據(jù)庫(kù)服務(wù)器主從同步的配置實(shí)例

    linux下指定mysql數(shù)據(jù)庫(kù)服務(wù)器主從同步的配置實(shí)例

    linux下指定數(shù)據(jù)庫(kù)服務(wù)器主從同步的配置實(shí)例,有需要的朋友可以參考下
    2013-01-01
  • MYSQL事務(wù)的隔離級(jí)別與MVCC

    MYSQL事務(wù)的隔離級(jí)別與MVCC

    這篇文章主要介紹了MYSQL事務(wù)的隔離級(jí)別與MVCC,文章首先通過(guò)事務(wù)的相關(guān)內(nèi)容展開(kāi)主題主要介紹,具有一定的參考價(jià)值,需要的小伙伴可以參一下
    2022-05-05

最新評(píng)論

古浪县| 社会| 开平市| 炉霍县| 罗定市| 涟源市| 南平市| 盈江县| 资溪县| 什邡市| 兴城市| 沂水县| 新源县| 南通市| 漳州市| 永修县| 浦城县| 武川县| 北宁市| 朝阳县| 英超| 澄城县| 库伦旗| 盘锦市| 拜城县| 关岭| 高尔夫| 英德市| 泽库县| 黎平县| 开阳县| 舞阳县| 满洲里市| 仪征市| 屏山县| 含山县| 秦皇岛市| 陆川县| 临西县| 桓台县| 上杭县|