2019.08
19
redis-cluster
一,為什么要用redis-cluster
1.并發問題
redis官方生成可以達到 10萬/每秒,每秒執行10萬條命令
假如業務需要每秒100萬的命令執行呢?
2.數據量太大
一臺服務器內存正常是16~256G,假如你的業務需要500G內存,你怎么辦?解決方案如下
- 配置一個超級牛逼的計算機,超大內存,超強cpu,但是問題是。。。。
2.正確的應該是考慮分布式,加機器,把數據分到不同的位置,分攤集中式的壓力
二,客戶端分片
redis實例集群主要思想是將redis數據的key進行散列,通過hash函數特定的key會映射到指定的redis節點上
數據分布
順序分區
哈希分區(redis-cluster用的是哈希分區)
節點取余
計算示例
節點 0 1 2
對1到6取余
1 1/3 =1 對應 節點1
2 2/3 =2 對應 節點2
3 3/3 =0 對應 節點0
4 4/3 =1
5 5/3 = 2
6 6/3 = 0
例如按照節點取余的方式,分三個節點
1~100的數據對3取余,可以分為三類
- 余數為0
- 余數為1
- 余數為2
那么同樣的分4個節點就是hash(key)%4
節點取余的優點是簡單,客戶端分片直接是哈希+取余
一致性哈希
客戶端進行分片,哈希+順時針取余
是個封閉 環
虛擬槽分區
每一個數據的鍵被哈希函數映射到一個槽位,redis-cluster規定一共有16384個槽位
三,搭建集群
單機模式
分布式架構
分布式架構
多個服務端,負責讀寫,彼此通信,redis指定了16384個槽,ruby的腳本自動就把分配槽位這事做了
文章出自:CCIE那點事 http://www.61384694.buzz/ 版權所有。本站文章除注明出處外,皆為作者原創文章,可自由引用,但請注明來源。 禁止全文轉載。
本文標題:redis-cluster
本文鏈接:http://www.61384694.buzz/?p=4190轉載請注明轉自CCIE那點事
如果喜歡:點此訂閱本站
下篇文章:DDL/DML/DCL區別概述
暫時還木有人評論,坐等沙發!