亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Redis什么是熱Key問題以及如何解決熱Key問題

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

一、什么是熱Key?

在Redis中,我們把訪問頻率高的Key,稱為熱Key。

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

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

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

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

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

2、請求分片集中,超過單臺Redis服務(wù)器的性能極限。

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

三、熱點Key的危害?

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

四、如何識別熱點Key?

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

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

2、使用redis之前,在客戶端寫程序統(tǒng)計上報。

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

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

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

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

4、使用redis自帶的命令。

例如monitor、redis-cli加上--hotkeys選項等,不過這種方式執(zhí)行起來很慢,可能會降低redis的處理請求的性能,慎用。

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

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

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

五、如何解決熱Key問題?

1、Redis集群擴(kuò)容:增加分片副本,分?jǐn)偪蛻舳税l(fā)過來的讀請求;

2、使用二級緩存,即JVM本地緩存,減少Redis的讀請求。

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

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

相關(guān)文章

  • MySQL的InnoDB存儲引擎的數(shù)據(jù)頁結(jié)構(gòu)詳解

    MySQL的InnoDB存儲引擎的數(shù)據(jù)頁結(jié)構(gòu)詳解

    這篇文章主要為大家詳細(xì)介紹了MySQL的InnoDB存儲引擎的數(shù)據(jù)頁結(jié)構(gòu),,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • MySQL主從搭建(多主一從)的實現(xiàn)思路與步驟

    MySQL主從搭建(多主一從)的實現(xiàn)思路與步驟

    通過MySQL主從配置,可以實現(xiàn)讀寫分離減輕數(shù)據(jù)庫壓力,最近正好遇到這個功能,所以這篇文章主要給大家介紹了關(guān)于MySQL主從搭建(多主一從)的實現(xiàn)思路與步驟,需要的朋友可以參考下
    2021-05-05
  • SQL去重方法匯總

    SQL去重方法匯總

    這篇文章主要給大家分享了SQL去重方法匯總,在使用SQL提數(shù)的時候,常會遇到表內(nèi)有重復(fù)值的時候,比如我們想得到?uv?(獨立訪客),就需要做去重。下面我們就來看看去重都有哪些方法吧
    2022-01-01
  • MySQL語句中的主鍵和外鍵使用說明

    MySQL語句中的主鍵和外鍵使用說明

    本文主要介紹了簡述MySQL主鍵和外鍵使用及說明,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2023-04-04
  • mysql學(xué)習(xí)筆記之完整的select語句用法實例詳解

    mysql學(xué)習(xí)筆記之完整的select語句用法實例詳解

    這篇文章主要介紹了mysql學(xué)習(xí)筆記之完整的select語句用法,結(jié)合實例形式詳細(xì)分析了mysql select語句各種常見參數(shù)、使用方法及操作注意事項,需要的朋友可以參考下
    2020-04-04
  • MySQL中where?1=1方法的使用及改進(jìn)

    MySQL中where?1=1方法的使用及改進(jìn)

    這篇文章主要介紹了MySQL中where?1=1方法的使用及改進(jìn),文章主要通對where?1?=?1的使用及改進(jìn)展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • 圖文并茂地講解Mysql索引(index)

    圖文并茂地講解Mysql索引(index)

    在關(guān)系數(shù)據(jù)庫中,索引是一種單獨的、物理的數(shù)對數(shù)據(jù)庫表中一列或多列的值進(jìn)行排序的一種存儲結(jié)構(gòu),下面這篇文章主要給大家介紹了關(guān)于Mysql索引(index)的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • mysql中鎖機(jī)制的最全面講解

    mysql中鎖機(jī)制的最全面講解

    大概幾個月之前項目中用到事務(wù),需要保證數(shù)據(jù)的強(qiáng)一致性,期間也用到了mysql的鎖,所以本文打算總結(jié)一下mysql的鎖機(jī)制,這篇文章主要給大家介紹了關(guān)于mysql中鎖機(jī)制的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • MySQL中關(guān)于超鍵和主鍵及候選鍵的區(qū)別

    MySQL中關(guān)于超鍵和主鍵及候選鍵的區(qū)別

    這篇文章主要介紹了MySQL中關(guān)于超鍵和主鍵及候選鍵的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • ubuntu下設(shè)置mysql自動備份的例子

    ubuntu下設(shè)置mysql自動備份的例子

    ubuntu下設(shè)置mysql自動備份的例子,供大家學(xué)習(xí)參考
    2013-01-01

最新評論