注意!要求使用的都是redis3.0以上的版本,因為3.0以上增加了redis集群的功能。
1.redis介紹
1.1什么是redis
Redis是用C語言開發的一個開源的高性能鍵值對(key-value)的非關系型數據庫。通過多種鍵值數據類型來適應不同場景下的存儲需求,目前支持的鍵值數據類型有:
字符串,散列,列表,集合,有序集合
2.2應用場景
緩存(數據查詢、短連接、新聞內容、商品內容等等)。(最多使用)
分布式集群架構中的session分離。
聊天室的在線好友列表。
任務隊列。(秒殺、搶購、12306等等)
應用排行榜。
網站訪問統計。
數據過期處理(可以精確到毫秒)
2.Redis集群的介紹
2.1Redis集群的架構


Redis 集群中內置了 16384 個哈希槽,redis-cluster把所有的物理節點映射到[0-16383]slot上,cluster 負責維護。當需要在 Redis 集群中放置一個 key-value 時,redis 先對 key 使用 crc16 算法算出一個結果,然后把結果對 16384 求余數,這樣每個 key 都會對應一個編號在 0-16383 之間的哈希槽,redis 會根據節點數量大致均等的將哈希槽映射到不同的節點
2.2 Redis集群的特點
當Redis集群啟動后,就自動在多個節點間做好分片,同時提供了分片之間的可用性:即當一部分redis節點故障或者網絡中斷后,集群還有從節點可以替代主節點繼續工作,但如果大面積的節點故障,那集群就不可用了。
Redis集群提供了:
自動將16384個數據槽點切分到多個Redis節點中
當一部分節點故障或不可達,集群依然能繼續工作
2.3 Redis集群的TCP端口
集群的每個節點都需要建立兩個TCP連接,監聽這兩個端口:
客戶端端口(一般是6379):需要對所有客戶端和集群節點開放,用于接收客戶端指令,且集群節點需要通過該端口向客戶端轉移數據。
集群總線端口(一般是6379+10000):只需要對集群中的所有節點開放,用于節點之間通過二進制協議通信。各節點通過集群總線檢測故障節點,更新配置等,而客戶端是不能使用該端口的。
2.4 Redis集群數據的分片
Redis集群使用的是哈希槽,有16384個哈希槽,決定一個key分配到哪個槽的算法:計算該key的CRC16,結果再模16384.
集群中的每個節點負責一部分哈希槽,比如集群中有3個節點,則: