您好,登錄后才能下訂單哦!
這篇文章主要介紹redis集群原理是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
redis是一種典型的no-sql 即非關系數(shù)據(jù)庫 像python的字典一樣 存儲key-value鍵值對 工作在memory中
所以很適合用來充當整個互聯(lián)網(wǎng)架構(gòu)中各級之間的cache 比如lvs的4層轉(zhuǎn)發(fā)層 nginx的7層代理層
尤其是lnmp架構(gòu)應用層如php-fpm或者是Tomcat到mysql之間 做一個cache 以減輕db的壓力
因為有相當一部分的數(shù)據(jù) 只是簡單的key-value對應關系,而且在實際的業(yè)務中常常在短時間內(nèi)迅速變動
如果用關系數(shù)據(jù)庫mysql之類存儲 會大大增加對db的訪問 導致db的負擔很重 因為所有的require中的大部分最后都要匯聚到db
所以如果想要業(yè)務穩(wěn)定 那么解決db的壓力 就是關鍵 所以現(xiàn)在大部分的解決方案就是在db層之上的各級使用多級的no-sql
像memcache redis 等 來為db提供緩沖
Redis集群
Redis 集群是一個可以在多個 Redis 節(jié)點之間進行數(shù)據(jù)共享的設施installation。
Redis 集群不支持那些需要同時處理多個鍵的 Redis 命令, 因為執(zhí)行這些命令需要在多個 Redis 節(jié)點之間移動數(shù)據(jù), 并且在高負載的情況下, 這些命令將降低Redis集群的性能, 并導致不可預測的行為。
Redis 集群通過分區(qū)partition來提供一定程度的可用性availability: 即使集群中有一部分節(jié)點失效或者無法進行通訊, 集群也可以繼續(xù)處理命令請求。
Redis集群提供了以下兩個好處:
將數(shù)據(jù)自動切分split到多個節(jié)點的能力。
當集群中的一部分節(jié)點失效或者無法進行通訊時, 仍然可以繼續(xù)處理命令請求的能力。
集群原理
所有的redis節(jié)點彼此互聯(lián)(PING-PONG機制),內(nèi)部使用二進制協(xié)議優(yōu)化傳輸速度和帶寬。
節(jié)點的fail是通過集群中超過半數(shù)的節(jié)點檢測失效時才生效。
客戶端與redis節(jié)點直連,不需要中間proxy層.客戶端不需要連接集群所有節(jié)點,連接集群中任何一個可用節(jié)點即可。
redis-cluster把所有的物理節(jié)點映射到[0-16383]slot上,cluster 負責維護node<->slot<->value
Redis集群中內(nèi)置了 16384 個哈希槽,當需要在 Redis 集群中放置一個 key-value 時,redis 先對key 使用 crc16 算法算出一個結(jié)果,然后把結(jié)果對 16384 求余數(shù),這樣每個 key 都會對應一個編號在 0-16383 之間的哈希槽,redis 會根據(jù)節(jié)點數(shù)量大致均等的將哈希槽映射到不同的節(jié)點
以上是redis集群原理是什么的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。