Redis主從和集群


主從概念

  • 一個master可以擁有多個slave,一個slave又可以擁有多個slave。如此下去,形成了強大的多級服務器集群架構。
  • master用寫數據,經統計:網站的讀寫比率是10:1
  • 通過主從分離可以實現讀寫分離
  • master和slave都是一個redis實例(redis服務)
    在這里插入圖片描述

主從配置

Redis:

安裝
sudo apt-get install redis-server

卸載
sudo apt-get purge --auto-remove redis-server

啟動
sudo service redis-server start

停止
sudo service redis-server stop
## master ##
#1. 修改 master配置
vim /etc/redis/redis.conf
#2.修改bind為本機ip
bind your_ip


## slave配置 ##
#1.復制redis.conf 名為slave.conf
cp redis.conf slave.conf
# 2.修改配置 修改bind為本機ip
bind your_ip
#3.更改端口 例如 
port 6378
#4. 更改slaveof
slaveof your_ip 6379
redis-server /etc/redis/slave.conf

查看主從關系 redis-cli -h your_ip -p your_port info Replication
在這里插入圖片描述
或者:
在這里插入圖片描述
當master中添加數據后,會自動備份到slave中,slave中read_only.

集群

為什么要有集群?

  • 如果訪問量過大(1000W),主服務肯定會掛掉,數據服務就掛掉了或者發生自然災難。
  • 大公司都有跟多服務器(華東地區,華南地區,華北地區,西北地區,西南地區等)

集群概念

  • 集群式相互獨立的,通過高速網絡互聯的計算機,它們構成了一個組,並以單一系統的模式加以管理。一個客戶與集群相互作用時,集群像是一個獨立的服務器。集群配置用於提高可用性和可縮放性。

當請求到來首先負載均衡服務器處理,把請求轉發到另外一台服務器上。

分類

  • 軟件層面
    只有一台電腦,在這台電腦上啟動了多個redis服務。

  • 硬件層面
    存在多台實體電腦,每台電腦上啟動了一個或多個redis服務

機器一:
新建一個文件夾,建立7000.conf 7001.conf 7002.conf

port 7000 #(7000-7002)
bind 172.21.0.16
#作為守護進程運行
daemonize yes
pidfile 7000.pid #(7000-7002)
cluster-enabled yes
cluster-config-file 7000_node.conf #(7000-7002)
#連接集群的超時時間
cluster-node-timeout 15000
appendonly yes

啟動三個服務
redis-server 7000.conf redis-server 7001.conf redis-server 7002.conf
在這里插入圖片描述
機器二相同配置 (7003-7005)

創建集群

  • redis的安裝包中包含了redis-trib.rb,用於創建集群。

  • 接下來機器上進行操作

  • 將指令復制,這樣可以在任何目錄下調用此命令。
    sudo cp /usr/share/doc/redis-tools/examples /redis-trib.rb /usr/local/bin/

  • 安裝ruby環境,因為redis-trib.rb是ruby開發的
    sudo apt-get install ruby

  • 安裝redis相關依賴
    sudo gem install redis

  • 運行如下指令創建集群
    redis-trib.rb create --replicas 1 172.21.0.16:7000 172.21.0.16:7001 172.21.0.16:7002 172.21.0.16:7003 172.21.0.16:7004 172.21.0.16:7005

在這里插入圖片描述
在這里插入圖片描述

Redis 集群中內置了 16384 個哈希槽,當需要在 Redis 集群中放置一個 key-value

時,redis 先對 key 使用 crc16 算法算出一個結果,然后把結果對 16384 求余數,

這樣每個 key 都會對應一個編號在 0-16383 之間的哈希槽,redis 會根據節點數量大

致均等的將哈希槽映射到不同的節點。

槽的分配:
在這里插入圖片描述

數據驗證
連接 redis,例如進入7002
redis-cli -h 172.21.0.16 -c -p 7002
在這里插入圖片描述
添加數據自動跳轉服務器。

在這里插入圖片描述
在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM