Redis主從復(fù)制、讀寫分離
一般主庫可以做讀寫、從庫做讀。
過程:
從庫啟動(dòng)時(shí),會(huì)向主庫發(fā)送sync命令。
主庫接收到sync命令后會(huì)開始在后臺(tái)保存快照(執(zhí)行rdb操作),并將保存期間接收到的命令緩存起來。
當(dāng)快照完成后,redis會(huì)將快照文件和所有緩存的命令發(fā)送給從庫。
從庫收到后,會(huì)載入快照文件并執(zhí)行收到的緩存的命令。
配置:
只需在從庫修改 redis.config(vim redis.config)文件,加入主庫的IP地址,端口號(hào),密碼。
slaveof 192.168... 6379
masterauth 123456--- 主庫沒有密碼就不用配

Redis-cluster集群
官方推薦三主三從,Redis-cluster集群至少需要6個(gè)節(jié)點(diǎn),一個(gè)主配一個(gè)從。
服務(wù)器有點(diǎn)小貴,這里先創(chuàng)建一臺(tái)虛擬機(jī)試試手,分配6個(gè)不同端口實(shí)現(xiàn)不同的節(jié)點(diǎn)。
7001、7002、7003、7004、7005、7006。
先把防火墻關(guān)閉了--
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機(jī)啟動(dòng)
systemctl status firewalld.service #查看firewall的狀態(tài)
- 創(chuàng)建redis-cluster目錄
mkdir -p 7001/data
mkdir -p 7002/data
mkdir -p 7003/data
mkdir -p 7004/data
mkdir -p 7005/data
mkdir -p 7006/data
mkdir bin - 到redis的安裝路徑復(fù)制src的腳本到bin目錄下(綠色的)
cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server redis-trib.rb /usr/local/redis-cluster/bin - 復(fù)制redis 實(shí)例 到7001
cp -r /usr/local/redis /usr/local/redis-cluster/7001 - 修改7001的redis.conf腳本
port 7001(每個(gè)節(jié)點(diǎn)的端口號(hào))
daemonize yes
bind 192.168.119.131(綁定當(dāng)前機(jī)器 IP)
pidfile /var/run/redis_7001.pid(pid 7001和port要對(duì)應(yīng))
cluster-enabled yes(啟動(dòng)集群模式)
cluster-config-file nodes-7001.conf(pid 7001和port要對(duì)應(yīng))
cluster-node-timeout 15000
appendonly yes
dir /usr/local/redis-cluster/7001/data/(數(shù)據(jù)文件存放位置,這個(gè)放到腳本最后面一行)
- 我們再復(fù)制5個(gè)分別放到對(duì)應(yīng)的端口號(hào)目錄里
\cp -rf /usr/local/redis-cluster/7001/* /usr/local/redis-cluster/7002
\cp -rf /usr/local/redis-cluster/7001/* /usr/local/redis-cluster/7003
\cp -rf /usr/local/redis-cluster/7001/* /usr/local/redis-cluster/7004
\cp -rf /usr/local/redis-cluster/7001/* /usr/local/redis-cluster/7005
\cp -rf /usr/local/redis-cluster/7001/* /usr/local/redis-cluster/7006 - 然后進(jìn)入7002-7006端口號(hào)對(duì)應(yīng)的redis.conf腳本,修改成對(duì)應(yīng)的端口號(hào)。
- 啟動(dòng)試試水
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/7001/redis/etc/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/7002/redis/etc/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/7003/redis/etc/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/7004/redis/etc/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/7005/redis/etc/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/7006/redis/etc/redis.conf -
測試節(jié)點(diǎn)
/usr/local/redis-cluster/7001/redis/bin/redis-cli -h 192.168.37.130 -p 7001
/usr/local/redis-cluster/7002/redis/bin/redis-cli -h 192.168.37.130 -p 7002
/usr/local/redis-cluster/7003/redis/bin/redis-cli -h 192.168.37.130 -p 7003
/usr/local/redis-cluster/7004/redis/bin/redis-cli -h 192.168.37.130 -p 7004
/usr/local/redis-cluster/7005/redis/bin/redis-cli -h 192.168.37.130 -p 7005
/usr/local/redis-cluster/7006/redis/bin/redis-cli -h 192.168.37.130 -p 7006
ping一下.
查看redis進(jìn)程:ps -ef |grep redis
9.這時(shí)候set,會(huì)報(bào)錯(cuò)
報(bào)錯(cuò).png - 安裝ruby軟件,直接復(fù)制到命令行運(yùn)行。
yum install ruby
yum install rubygems
gem install redis (或者使用本地上傳方式,不知道是不是國內(nèi)問題,可能這個(gè)命令下載不來) - 找到剛剛下載gem install redis 的位置,運(yùn)行命令。
gem install -l redis-3.2.1.gem - 最后測試集群:
/usr/local/redis-cluster/bin/redis-trib.rb create --replicas 1 id地址:7001 id地址:7002 id地址:7003 id地址:7004 id地址:7005 id地址:7006

M主S從
測試:
往7001set數(shù)據(jù),保存到了6007。

- 如果報(bào)錯(cuò):
報(bào)錯(cuò)2.png
可能是 redis-trib.rb與你所安裝的版本不符。
下載3.2.1版本的 redis-trib.rb。官網(wǎng)地址
解壓后我們在src目錄找到redis-trib.rb腳本,上傳,再用這個(gè)redis-trib.rb運(yùn)行集群。
在云服務(wù)器上搭建
基本步驟跟上面差不多,要注意幾點(diǎn):
- 需要protected-mode把改成no:protected-mode no
保護(hù)模式,yes就是不允許外網(wǎng)訪問。 -
bind后面寫主機(jī)ip地址,我的寫了沒用,我就直接注釋了,或者寫0.0.0.0。就上面IP都允許。
bind.png - protected-mode改為no,bind有注釋了,運(yùn)行的時(shí)候會(huì)報(bào)你什么安全的東西,意思就是你總的設(shè)置一個(gè)密碼吧,不然什么人都能鏈。加個(gè)密碼,requirepass 123。
-
看你是用什么云服務(wù),騰訊云阿里云需要去安全組開放端口,端口+10000也要開放,6個(gè)節(jié)點(diǎn)的12個(gè)端口號(hào)。百度云就不需要了,默認(rèn)就已經(jīng)是全部端口號(hào)都開啟了。
端口1.png
端口2.png - redis官方一般不建議加密碼了,主要是只允許本機(jī)訪問,bind后面加固定ip的方法比較好




