Redis入門到精通day04
一、redis的釋出訂閱
釋出訂閱是程序間的一種消息通信模式:發送者(pub)放消息,訂閱者(sub)接收消息
實際工作中很少用這個作為消息中間件,一般是用rabbitMQ等
1.指令
firewall-cmd --zone=public --add-port=6379-6390/tcp --permanent #永久開放6379-6380安全端口
firewall-cmd --reload #重新開機防火牆
firewall-cmd --zone=public --list-ports #查詢已經開放的所有端口
subscribe k1 k2 k3 訂閱多個消息
publish k1 v1 釋出消息,已經訂閱可以全部接收
psubscribe 訂閱多個消息,通配* psubscribe new
publish new11 redis 接收通配符消息
二、主從複制
1.主從複制介紹
mast er-slave,也就是主從複制,主機資料更新後根據配置和政策,自動同步到備機,master以寫為主,slave以讀為主
1.作用
讀寫分離
容災能力
2.操作
#開啟多台redis
mkdir -p /mydata/redis01/conf
touch /mydata/redis01/conf/redis.conf
mkdir -p /mydata/redis02/conf
touch /mydata/redis02/conf/redis.conf
docker run -p 6380:6380 --name redis01 -v /mydata/redis01/data:/data -v /mydata/redis01/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf
docker run -p 6381:6381 --name redis02 -v /mydata/redis02/data:/data -v /mydata/redis02/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf
1.配從不配主
在主從主機中,隻需要配置從庫,不用配置主庫
2.從庫配置
slaveof 主庫ip 主庫端口
每次mater斷開後,都需要重新連接配接,除非修改redis.conf
3.修改配置
多台機器,端口号為xxxx
1.拷貝多個redis.conf
2.開啟daemonize yes
3.修改pidfile /var/run/redisxxxx.pid
4.修改端口 port xxxx
5.修改logfile為logfile “xxxx.log”
6.修改dbfilename dumpxxxx.rdb
4.常見操作
1.一主二仆
主庫寫,從庫隻能讀
info replication #檢視redis資訊(主從資訊等)
slaveof ip 端口 #将本機設定為從庫,像我這裡是使用雲伺服器,是以是綁定雲伺服器的ip 6379
主庫寫入的,從庫也能讀取,從庫不能寫
如果主庫down機,從機會原地待命!!!!待主機回歸,繼續主從關系
模拟主機down機
主機恢複,繼續讀寫
每次斷開後,都需要重新連接配接主從關系,除非修改redis.conf
也就是如果從庫down機,如果沒在配置檔案中配置,需要重新連接配接,否則失去連接配接
2.薪火相傳
去中心化,使用從給從傳遞
上一個Slave可以是下一個slave的Master,Slave同樣可以接收其他slaves的連接配接和同步請求,那麼該slave作為了鍊條中下一個的master,可以有效減輕master的寫壓力
3.反客為主
slaveof no one 使目前資料庫停止與其他資料庫的同步,轉換成主資料庫
4.Sentinel哨兵模式
反客為主的自動版,能夠背景監控主機是否故障,如果故障了根據投票數自動将從庫轉換為主庫
1.自定義的/myredis目錄下建立sentinel.conf檔案,名字絕不能錯
2.配置配置檔案, sentinel monitor 被監控資料庫名字(自己起名字) 127.0.0.1 6379 1;上面最後一個數字1,表示主機挂掉後salve投票看讓誰接替成為主機,得票數多少後成為主機
3.啟動哨兵redis-sentinel /myredis/sentinel.conf
配置哨兵後,如果主機down機,将開始投票,投票選擇slave中的一個作為主機,形成自己的體系;當原來的主機連上來時,會以slave的形式加入新體系。
5.複制
1.複制原理
- 全量複制:而slave服務在接收到資料庫檔案資料後,将其存盤并加載到記憶體中。
- 增量複制:Master繼續将新的所有收集到的修改指令依次傳給slave,完成同步
步驟:
1.slave啟動成功連接配接到master後會發送一個sync指令
2.Master接到指令啟動背景的存盤程序,同時收集所有接收到的用于修改資料集指令,在背景程序執行完畢之後,master将傳送整個資料檔案到slave,以完成一次完全同步
3.但是隻要是重新連接配接master,一次完全同步(全量複制)将被自動執行
2.複制缺點
由于所有的寫操作都是先在Master上操作,然後同步更新到Slave上,是以從Master同步到Slave機器有一定的延遲,當系統很繁忙的時候,延遲問題會更加嚴重,Slave機器數量的增加也會使這個問題更加嚴重。