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

Redis分片集群、數(shù)據(jù)讀寫規(guī)則問題小結(jié)

 更新時間:2025年06月20日 15:05:50   作者:崎嶇Qiu  
本文介紹了Redis分片集群的原理,通過數(shù)據(jù)分片和哈希槽機制解決單機內(nèi)存限制與寫瓶頸問題,實現(xiàn)分布式存儲和高并發(fā)處理,但存在通信開銷大、維護復(fù)雜及對事務(wù)支持不足等局限性,感興趣的朋友跟隨小編一起看看吧

一、分片集群解決的問題

盡管主從復(fù)制和哨兵模式解決了 Redis 的高可用高并發(fā)讀的問題,但它們?nèi)匀淮嬖趦蓚€主要限制:

  • 海量數(shù)據(jù)存儲問題:所有數(shù)據(jù)都存儲在一個 Master 節(jié)點上,單個節(jié)點的內(nèi)存容量是有限的。當數(shù)據(jù)量非常大時,一個 Master 節(jié)點無法承載。
  • 高并發(fā)寫的問題:所有的寫操作都集中在 Master 節(jié)點上,單個 Master 節(jié)點的寫能力是有限的。當寫請求非常多時,Master 節(jié)點可能會成為瓶頸。

分片集群就是為了正是為了突破解決高并發(fā)寫海量數(shù)據(jù)存儲上的瓶頸。

二、分片集群圖解 

分片集群特征

  • 集群中有多個master,每個master保存不同數(shù)據(jù)(每個分片數(shù)據(jù)是不同的,分片內(nèi)主從數(shù)據(jù)是相同的)
  • (分片內(nèi))每個master都可以有多個slave節(jié)點
  • (不同分片間)master之間通過ping監(jiān)測彼此健康狀態(tài)
  • 客戶端請求可以訪問集群任意節(jié)點,最終都會被轉(zhuǎn)發(fā)到正確節(jié)點

如何解決的上述問題?(與哨兵模式對比) 

特征分片集群哨兵模式
數(shù)據(jù)分布數(shù)據(jù)分散在多個 Master 節(jié)點(數(shù)據(jù)分片)所有數(shù)據(jù)在一個 Master 節(jié)點(全量復(fù)制)
解決問題海量數(shù)據(jù)存儲、高并發(fā)寫高可用、高并發(fā)讀
高可用實現(xiàn)集群內(nèi)部 Master 節(jié)點互相協(xié)商故障轉(zhuǎn)移外部獨立 Sentinel 集群負責(zé)故障轉(zhuǎn)移
健康監(jiān)測Master 節(jié)點之間互相監(jiān)測Sentinel 監(jiān)測 Master/Slave
節(jié)點間通信Master 之間通過集群總線,Master 與 Slave 數(shù)據(jù)同步Sentinel 與 Redis 節(jié)點,Sentinel 之間
客戶端連接連接任意節(jié)點,通過重定向找到正確節(jié)點通過 Sentinel 獲取 Master 地址,直接連接 Master
復(fù)雜性相對復(fù)雜(數(shù)據(jù)分片、槽管理、數(shù)據(jù)遷移等)相對簡單

使用場景

例如,在電商、在線課程等類型項目中,如果課程數(shù)量、用戶數(shù)量或活動數(shù)據(jù)量非常龐大,單個 Redis 實例無法承載時,可以考慮使用分片集群

  • 存儲海量課程信息:將不同的課程信息分散到不同的 Master 節(jié)點上,例如按照課程ID的哈希值進行分片。
  • 處理高并發(fā)的寫操作:例如在大型促銷活動中,用戶頻繁修改個人信息、購物車等,這些寫操作可以分散到不同的 Master 節(jié)點上處理,提高整體的處理能力。

三、分片集群下的數(shù)據(jù)讀寫 

面試官:你提到分片集群解決了海量數(shù)據(jù)存儲和高并發(fā)寫的問題,那么它是如何決定一個key應(yīng)該存儲在哪個Master節(jié)點上的呢?

答:Redis 分片集群采用哈希槽 (Hash Slot) 的方式來管理數(shù)據(jù)。整個集群共有 16384 個哈希槽。每個 key 在存儲時,會根據(jù)其 key 的哈希值計算出一個槽號(通常是 CRC16(key) % 16384)。

集群中的每個 Master 節(jié)點負責(zé)管理一部分哈希槽。客戶端根據(jù) key 計算出槽號后,就知道應(yīng)該去哪個 Master 節(jié)點操作這個 key。

 圖示key的存儲過程

四、總結(jié)及缺點 

分片集群(Redis Cluster) :是一種分布式解決方案,它通過將數(shù)據(jù)分散存儲在多個 Master 節(jié)點上,來解決海量數(shù)據(jù)存儲高并發(fā)寫的問題。每個 Master 節(jié)點負責(zé)一部分數(shù)據(jù)(通過哈希槽分配),并且可以有自己的 Slave 節(jié)點來保證高可用。 

缺點和局限性:

集群間通信開銷:集群之間的心跳檢測和數(shù)據(jù)通信會消耗大量的網(wǎng)絡(luò)帶寬

對 Lua 腳本和事務(wù)支持有限:Redis 的 Lua 腳本和事務(wù)通常要求操作的 key 都在同一個節(jié)點上;在分片集群中,如果一個 Lua 腳本或事務(wù)需要操作分布在不同 Master 節(jié)點上的 key,將無法執(zhí)行

維護復(fù)雜

數(shù)據(jù)遷移復(fù)雜

客戶端復(fù)雜

到此這篇關(guān)于Redis分片集群、數(shù)據(jù)讀寫規(guī)則問題小結(jié)的文章就介紹到這了,更多相關(guān)redis分片集群內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用JMeter插件Redis Data Set如何實現(xiàn)高性能數(shù)據(jù)驅(qū)動測試

    使用JMeter插件Redis Data Set如何實現(xiàn)高性能數(shù)據(jù)驅(qū)動測試

    RedisDataSet插件是JMeter的一個插件,可以實現(xiàn)從Redis中動態(tài)加載數(shù)據(jù),并將其用作測試參數(shù),本文詳細介紹如何在JMeter中使用RedisDataSet插件,幫助你實現(xiàn)高效的數(shù)據(jù)驅(qū)動測試
    2025-01-01
  • 淺析Redis?切片集群的數(shù)據(jù)傾斜問題

    淺析Redis?切片集群的數(shù)據(jù)傾斜問題

    如果?Redis?中的部署,采用的是切片集群,數(shù)據(jù)是會按照一定的規(guī)則分散到不同的實例中保存,比如,使用?Redis?Cluster?或?Codis,這篇文章主要介紹了Redis?切片集群的數(shù)據(jù)傾斜分析,需要的朋友可以參考下
    2022-06-06
  • Redis中對大Key進行處理方式

    Redis中對大Key進行處理方式

    這篇文章主要介紹了Redis中對大Key進行處理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • Redis migrate數(shù)據(jù)遷移工具的使用教程

    Redis migrate數(shù)據(jù)遷移工具的使用教程

    這篇文章主要給大家介紹了關(guān)于Redis migrate數(shù)據(jù)遷移工具的使用教程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Redis+aop實現(xiàn)接口防刷(冪等)的解決方案

    Redis+aop實現(xiàn)接口防刷(冪等)的解決方案

    在高并發(fā)場景下,可能會因為網(wǎng)絡(luò)或者服務(wù)器原因,造成延遲,同時就是有可能會有人用腳本大量訪問你的接口,造成資源崩潰,所以本文給大家介紹了Redis+aop實現(xiàn)接口防刷(冪等)的解決方案,需要的朋友可以參考下
    2024-03-03
  • Redis中三種特殊數(shù)據(jù)類型命令詳解

    Redis中三種特殊數(shù)據(jù)類型命令詳解

    Geospatial是地理位置類型,我們可以用來查詢附近的人、計算兩人之間的距離等,這篇文章主要介紹了Redis中三種特殊數(shù)據(jù)類型命令詳解,需要的朋友可以參考下
    2024-05-05
  • Redis三種常用的緩存讀寫策略步驟詳解

    Redis三種常用的緩存讀寫策略步驟詳解

    Redis有三種讀寫策略分別是:旁路緩存模式策略、讀寫穿透策略、異步緩存寫入策略,接下來通過本文給大家詳細介紹下Redis三種常用的緩存讀寫策略,感興趣的朋友一起看看吧
    2022-05-05
  • 使用RedisAtomicInteger計數(shù)出現(xiàn)少計問題及解決

    使用RedisAtomicInteger計數(shù)出現(xiàn)少計問題及解決

    這篇文章主要介紹了使用RedisAtomicInteger計數(shù)出現(xiàn)少計問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Window server中安裝Redis的超詳細教程

    Window server中安裝Redis的超詳細教程

    這篇文章主要介紹了Window server中安裝Redis的教程,本文通過圖文實例代碼相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • redis GEO數(shù)據(jù)結(jié)構(gòu)、實現(xiàn)附近商鋪功能實踐

    redis GEO數(shù)據(jù)結(jié)構(gòu)、實現(xiàn)附近商鋪功能實踐

    文章介紹了Redis中的GEO命令及其用途,包括地理坐標存儲、距離計算、坐標轉(zhuǎn)換和位置搜索等功能,還分享了如何使用Redis實現(xiàn)查詢附近商鋪的功能,包括導(dǎo)入商鋪信息和根據(jù)類型及距離進行搜索
    2025-12-12

最新評論

松桃| 舞钢市| 五华县| 盐边县| 宜都市| 长乐市| 淮南市| 伊宁县| 霍州市| 萨迦县| 黄浦区| 黄山市| 信阳市| 汨罗市| 秦皇岛市| 新沂市| 吉林市| 南投市| 娱乐| 宁强县| 上饶市| 桦甸市| 岳西县| 永川市| 石景山区| 泗阳县| 合作市| 樟树市| 三门峡市| 大英县| 安顺市| 太谷县| 申扎县| 云安县| 遵化市| 景谷| 勐海县| 玛纳斯县| 崇信县| 汝城县| 临澧县|