master和slave都是一個redis實例(redis服務)
node
安裝 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.python
爲何要有集羣?
redis
集羣概念
算法
當請求到來首先負載均衡服務器處理,把請求轉發到另一臺服務器上。vim
分類
ruby
軟件層面
只有一臺電腦,在這臺電腦上啓動了多個redis服務。bash
硬件層面
存在多臺實體電腦,每臺電腦上啓動了一個或多個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)架構
建立集羣
將指令複製,這樣能夠在任何目錄下調用此命令。
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
添加數據自動跳轉服務器。