第十章 Redis 集群搭建

2022-07-13 09:06:11 字數 4154 閱讀 5079

redis學習

一、概述

二、redis cluster 集群安裝搭建步驟

wget 

tar -zxvf /redis-3.2.1.tar.gz

#

編譯並進行安裝

#

因為 redis 是用 c 實現的,所有要進行編譯。

cd redis-3.2.1

make && make install

#相當於:

- make

- make install

安裝 ruby 環境

redis 集群是用的 ruby 指令碼,所以要想執行該指令碼,需要 ruby 環境.。對應 redis 的原始碼 src 目錄下的redis-trib.rb,redis-trib.rb 是redis 官方推出的管理 redis 集群的工具,是基於 redis 提供的集群命令封裝成簡單、便捷、實用的操作工具。所以為了方便管理集群,可安裝一下 ruby 環境。

yum install ruby 

yum install rubygems

#或者執行

yum -y install ruby ruby-devel rubygems rpm-build

#gem 命令安裝 redis 介面,gem 是 ruby 的乙個工具包

gem install redis

#安裝完成之後執行一下 redis-trib.rb 命令,出現 redis-trib 命令的使用引數就說明 ruby 環境是可靠的

/usr/local/redis-3.2.1/src/redis-trib.rb

搭建集群 (redis-cluster)

#1、建立 redis-cluster 目錄以及 redis 節點例項檔案目錄

cd /usr/local

mkdir redis-cluster

cd /usr/local/redis-cluster

mkdir redis-8001 redis-8002 redis-8003 redis-8004 redis-8005 redis-8006

#2、複製 redis.conf 到 redis 節點目錄下

cd /usr/local/redis-3.2.1

cp redis.conf /usr/local/redis-cluster/redis-8001

cp redis.conf /usr/local/redis-cluster/redis-8002

cp redis.conf /usr/local/redis-cluster/redis-8003

...#3、分別修改節點下 redis-conf 檔案,由於在一台機器(192.16819.129 偽分布式集群)上,因此每個例項應該有不同的埠。同時,每個例項顯然會有自己的存放資料的地方。

#埠port 8001

#開啟後台模式

daemonize yes

#redis 以後臺模式執行時缺省會把 pid 檔案放在 /var/run/redis_6379.pid

pidfile /usr/local/redis-3.0.0/pid/redis_8001.pid

#rdb 持久化 dump 備份檔案目錄

dir /usr/local/redis-cluster/redis-8001

#4、開啟集群配置

cluster-config-file nodes-8001.conf

cluster-enabled yes

cluster-node-timeout 15000

#5、編寫 shell 指令碼批量啟動 startall.sh 與關閉 shutdown.sh redis 例項

startall.sh

/usr/local/redis-3.0.0/src/redis-server /usr/local/redis-cluster/redis-8001/redis.conf

/usr/local/redis-3.0.0/src/redis-server /usr/local/redis-cluster/redis-8002/redis.conf

/usr/local/redis-3.0.0/src/redis-server /usr/local/redis-cluster/redis-8003/redis.conf

/usr/local/redis-3.0.0/src/redis-server /usr/local/redis-cluster/redis-8004/redis.conf

/usr/local/redis-3.0.0/src/redis-server /usr/local/redis-cluster/redis-8005/redis.conf

/usr/local/redis-3.0.0/src/redis-server /usr/local/redis-cluster/redis-8006/redis.conf

chmod +x startall.sh 修改 startall.sh 檔案的執行許可權

執行 startall.sh 檔案啟動 redis:$ /usr/local/redis-cluster/startall.sh

ps -ef | grep redis 檢視 redis 是否啟動成功!

shutdown.sh

cd /usr/local/redis-3.0.0/src

./redis-cli -h 47.95.38.201 -p 8001 shutdown

./redis-cli -h 47.95.38.201 -p 8002 shutdown

./redis-cli -h 47.95.38.201 -p 8003 shutdown

./redis-cli -h 47.95.38.201 -p 8004 shutdown

./redis-cli -h 47.95.38.201 -p 8005 shutdown

./redis-cli -h 47.95.38.201 -p 8006 shutdown

chmod +x shutdown.sh 修改 shutdown.sh 檔案的執行許可權

執行 shutdown.sh 檔案關閉 redis:$ /usr/local/redis-cluster/shutdown.sh

#6、使用 ruby 指令碼建立集群,建立集群結點間得主從關係

./redis-trib.rb create --replicas 1 47.95.38.201:8001 47.95.38.201:8002 47.95.38.201:8003 47.95.38.201:8004 47.95.38.201:8005 47.95.38.201:8006

問題 :redis 集群一直 waiting for the cluster to join....

redis 集群不僅需要開通 redis 客戶端連線的埠,而且需要開通集群匯流排埠,集群匯流排埠為 redis 客戶端連線的埠 + 10000。如redis埠為 6379 則集群匯流排埠為 16379 故,所有伺服器的點需要開通redis 的客戶端連線埠和集群匯流排埠。

問題:建立 redis 集群報錯:err slot 0 is already busy (redis::commanderror)

slot 插槽被占用了、這是因為 搭建集群前時,以前 redis 的舊資料和配置資訊沒有清理乾淨。

用 redis-cli 登入到每個節點執行 flushall 和 cluster reset 就可以了;或者清除掉每個節點下的 rdb和node-conf檔案。

#執行下方命令檢查是否搭建成功

集群初步搭建成功!

集群搭建參考教程

redis集群搭建教程

redis集群模式

redis集群搭建及注意事項

Redis 第十章 集群

redis cluster 是redis 的分布式解決方案,在 3.0版本正式推出,有效地解決了redis 分布式方面的需求。當遇到單機記憶體 併發 流量等瓶頸時,可以採用cluster 架構方案達到負載均衡的目的。之前,redis 分布式方案一般有兩種 客戶端分割槽方案,優點是分割槽邏輯可控,缺點...

第十章 函式

使用def關鍵字 定義個數可變的位置形參 定義個數可變的關鍵字形參 定義預設值引數 定義個數可變的位置形參 deffun1 args 結果為乙個元組 print args fun1 10,20,30 10,20,30 定義個數可變的關鍵字形參 deffun2 args 結果為乙個字典 print a...

第十章 屬性

z屬性 本章也比較簡單稍作介紹 無參屬性就是我們常見的屬性 可以封裝屬性 以執行緒安全方式訪問 有參屬性就是c 中的所引器 匿名型別 如圖遇到如下 具體點就是 上面的注釋也已經講清楚了,定義的型別之後,構造例項,然後初始化屬性。現在詳細說下 編譯器接收到 上圖 先用var 定義乙個型別,但是不具體指...