操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    注意!要求使用的都是.0以上的版本,因為3.0以上增加了redis集群的功能。

    1.redis介紹

    1.1什么是redis

    Redis是用C語言開發的一個開源的高性能鍵值對(key-value)的非關系型數據庫。通過多種鍵值數據類型來適應不同場景下的存儲需求,目前支持的鍵值數據類型有:

    字符串,散列,列表,集合,有序集合

    2.2應用場景

    緩存(數據查詢、短連接、新聞內容、商品內容等等)。(最多使用)

    分布式集群架構中的分離。

    聊天室的在線好友列表。

    linux redis集群搭建_redis集群數據一致性_redis集群搭建

    任務隊列。(秒殺、搶購、12306等等)

    應用排行榜。

    網站訪問統計。

    數據過期處理(可以精確到毫秒)

    2.Redis集群的介紹

    2.集群的架構

    Redis 集群中內置了 16384 個哈希槽,redis-把所有的物理節點映射到[0-16383]slot上, 負責維護。當需要在 Redis 集群中放置一個 key-value 時,redis 先對 key 使用 crc16 算法算出一個結果,然后把結果對 16384 求余數,這樣每個 key 都會對應一個編號在 0-16383 之間的哈希槽,redis 會根據節點數量大致均等的將哈希槽映射到不同的節點

    redis集群搭建_redis集群數據一致性_linux redis集群搭建

    2.2 Redis集群的特點

    當Redis集群啟動后,就自動在多個節點間做好分片,同時提供了分片之間的可用性:即當一部分redis節點故障或者網絡中斷后,集群還有從節點可以替代主節點繼續工作,但如果大面積的節點故障,那集群就不可用了。

    Redis集群提供了:

    自動將16384個數據槽點切分到多個Redis節點中

    當一部分節點故障或不可達,集群依然能繼續工作

    2.3 Redis集群的TCP端口

    集群的每個節點都需要建立兩個TCP連接,監聽這兩個端口:

    客戶端端口(一般是6379):需要對所有客戶端和集群節點開放,用于接收客戶端指令redis集群數據一致性,且集群節點需要通過該端口向客戶端轉移數據。

    集群總線端口(一般是6379+10000):只需要對集群中的所有節點開放,用于節點之間通過二進制協議通信。各節點通過集群總線檢測故障節點,更新配置等,而客戶端是不能使用該端口的。

    linux redis集群搭建_redis集群搭建_redis集群數據一致性

    2.4 Redis集群數據的分片

    Redis集群使用的是哈希槽,有16384個哈希槽,決定一個key分配到哪個槽的算法:計算該key的CRC16,結果再模16384.

    集群中的每個節點負責一部分哈希槽,比如集群中有3個節點,則:

    這樣的分布方式方便節點的添加和刪除。比如,需要新增一個節點D,只需要把A、B、C中的部分哈希槽數據移到D節點。同樣,如果希望在集群中刪除A節點,只需要把A節點的哈希槽的數據移到B和C節點,當A節點的數據全部被移走后,A節點就可以完全從集群中刪除。

    因為把哈希槽從一個節點移到另一個節點是不需要停機的,所以,增加或刪除節點,或更改節點上的哈希槽,也是不需要停機的。

    如果多個key都屬于一個哈希槽,集群支持通過一個命令(或事務, 或lua腳本)同時操作這些key。通過“哈希標簽”的概念,用戶可以讓多個key分配到同一個哈希槽。如果key含有大括號”{}”,則只有大括號中的字符串會參與哈希,比如”this{foo}”和”{foo}”這2個key會分配到同一個哈希槽,所以可以在一個命令中同時操作他們。

    2.5 Redis集群的主從模式

    每個哈希槽都有一個主節點和多個從節點。

    舉例:如果有六個節點,則分A,B,C三個為主節點,A1,B1,C1三個為對應的從節點,當A發生故障后,集群會提升A1為主節點,A1會繼承A節點的數據,其實A1就相當于A的一個副本,讓集群繼續工作。

    redis集群搭建_linux redis集群搭建_redis集群數據一致性

    2.5.1 redis-投票:容錯

    (1)投票過程是集群中所有主節點參與,如果半數以上主節點與故障主節點通信超過(-node-),認為當前該主節點掛掉.

    (2):什么時候整個集群不可用(:fail)?

    a:如果集群任意主節點掛掉,且沒有從節點.集群進入fail狀態,也可以理解成集群的slot映射[0-16383]不完成時進入fail狀態.

    b:如果集群超過半數以上主節點掛掉,無論是否有從節點,集群都進入fail狀態.

    ps:當集群不可用時,所有對集群的操作做都不可用,收到((error) The is down)錯誤。

    2.6 Redis集群的一致性保證

    Redis集群不能保證強一致性。一些已經向客戶端確認寫成功的操作,會在某些不確定的情況下丟失。

    linux redis集群搭建_redis集群搭建_redis集群數據一致性

    產生寫操作丟失的第一個原因,是因為主從節點之間使用了異步的方式來同步數據。

    一個寫操作是這樣一個流程:

    1)客戶端向主節點B發起寫的操作

    2)主節點B回應客戶端寫操作成功

    3)主節點B向它的從節點B1,B2,B3同步該寫操作

    從上面的流程可以看出來,主節點B并沒有等從節點B1,B2,B3寫完之后再回復客戶端這次操作的結果。所以redis集群數據一致性,如果主節點B在通知客戶端寫操作成功之后,但同步給從節點之前,主節點B故障了,其中一個沒有收到該寫操作的從節點會晉升成主節點,該寫操作就這樣永遠丟失了。

    節點超時(node ):對集群來說非常重要,當達到了這個節點超時的時間之后,主節點被認為已經宕機,可以用它的一個從節點來代替。同樣,在節點超時時,如果主節點依然不能聯系到其他主節點,它將進入錯誤狀態,不再接受寫操作。

    2.7 Redis集群的參數配置

    在redis.conf中的一些參數說明:

    2.8 基于.04下安裝redis,并搭建redis集群

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有