linux redis客户端_你见过能把Redis的主从复制讲这么明白的吗?
概念
1.Conception(概念)
Redis的復制也就是我們所說的主從復制,主機數據更新后根據配置和策略,自動同步到備機的master/slaver機制,Master以寫為主,Slave以讀為主。
2.Function(功能)
讀寫分離(秉持與RDBMS 相同的設計理念)
容災恢復
Redis的復制的實現
這里我們將具體說明并演示Redis的S-M Relication(鑒于各種原因我將在本地演示,不加入其他域的主機,但其主從復制的原理通過橫向對比即可應用于不同主機,這里不贅述)。
復制的實現
配置規則:配從(庫)不配主(庫)
從庫配置:slaveof 主庫IP 主庫端口,slaveof 192.168.123.100 6379 表明該主機將附從于IP地址為192.168.123.100 端口號為 6379 的Redis。
每次與master斷開之后,都需要重新連接,除非你配置進redis.conf文件.
使用 info replication 查看當前server的S-M關系。
修改配置文件細節操作
這里我們將詳細著重地講解如何在本地開啟S-M Relication,為了數據備份并達到演示的效果我將將之前Redis的安裝Root File轉移至其他文件夾 E:WorkSpaceIDEsRedis1。并且使用Linux OS Env.來演示。由于Windows OS Env不支持 daemonize 和 pid設置,因而無法在Windows OS上做演示,這也呼應了我之前說的Redis的發揮最優良的OS Env應是 Linux/Unix。
- 拷貝多個redis.conf文件
這里我們將使用6379 6382 6381 三個端口來模擬S-M Replication。
- 開啟daemonize yes
Windows:不支持
Linux:General 區域的 daemonize yes
- pid文件名字
Windows:不支持
Linux:General 區域的
pidfile /var/run/redis79.pid(redis79.conf)
pidfile /var/run/redis80.pid(redis80.conf)
pidfile /var/run/redis81.pid(redis81.conf)
- 指定端口
Windows / Linux: General 區域的
port 6379(redis79.conf)
port 6380(redis80.conf)
port 6381(redis81.conf)
- log文件名字
Windows / Linux: General 區域的
logfile “6379.log”(redis79.conf)
logfile “6380.log”(redis80.conf)
logfile “6381.log”(redis81.conf)
- dump.rdb名字
-Windows / Linux:SNAPSHOTTING 區域的
- dbfilename dump6379.rdb(redis79.conf)
- dbfilename dump6380.rdb(redis80.conf)
- dbfilename dump6381.rdb(redis81.conf)
最終配置好的3個客戶端如下圖所示:
配置好以后將6379設置為Master 6380/6381設置Slave,如下圖所示
注意點:
一旦S-M Replication形成 S將共享M 的所有數據。
S 只有讀的權限。
S-M 的數據同步存在一定延時。
- Redis S-M中常用的3招
一主二仆
一個Master兩個Slave
日志查看
主機日志
備機日志
info replication(查看S-M Replication 關系)
主從問題
1 切入點問題?slave1、slave2是從頭開始復制還是從切入點開始復制?
答: 一旦S-M關系形成,S將享有M所有的數據即從頭開始復制M所有的數據。
2 從機是否可以寫?set可否?
答:從機只能讀,不能寫即不能set。
3 主機shutdown后情況如何?從機是上位還是原地待命
答:M宕機之后 從機將人原地待命并保留M所有的數據(M最近一次的數據保存可能會丟失)
4 主機又回來了后,主機新增記錄,從機還能否順利復制?
答:主機重新連接之后將與從機重新建立S-M Replication 關系,并且主機的新增記錄仍能同步至從機。
5 其中一臺從機down后情況如何?依照原有它能跟上大部隊嗎?
答:從機宕機之后,需要重新建立S-M Replication 關系(手動配置:slaveof IP PORT,配置配置:slaveof 192.168.123.100 6379),當重新與M 建立 S-M Replication之后 S 仍共享M 所有數據。
- 薪火相傳
由上圖我們可以看出Redis 的S-M Replication具有傳遞行,即一個S即可以使SLAVE 也可以是一個MASTER。在做Redis集群是會涉及到這一理念。
- 反客為主
Redis的S-M Replication中的一個SLAVE欲解除S-M關系時可以通過一下命令實現:
SLAVEOF no one: 使當前數據庫停止與其他數據庫的同步,轉成主數據庫
Redis 復制的原理
slave啟動成功連接到master后會發送一個sync命令。
Master接到命令啟動后臺的存盤進程,同時收集所有接收到的用于修改數據集命令,在后臺進程執行完畢之后,master將傳送整個數據文件到slave,以完成一次完全同步。
全量復制:而slave服務在接收到數據庫文件數據后,將其存盤并加載到內存中。
增量復制:Master繼續將新的所有收集到的修改命令依次傳給slave,完成同步。
但是只要是重新連接master,一次完全同步(全量復制)將被自動執行
Redis 講解系列之 Redis的主從復制(二)
本章節我們將學習一下Redis 的Sentinel(哨兵模式)主從復制機制。
Sentinel介紹
Sentinel是Redis的高可用性(HA)解決方案,由一個或多個Sentinel實例組成的Sentinel系統可以監視任意多個主服務器,以及這些主服務器屬下的所有從服務器,并在被監視的主服務器進行下線狀態時,自動將下線主服務器屬下的某個從服務器升級為新的主服務器,然后由新的主服務器代替已下線的主服務器繼續處理命令請求。Redis提供的sentinel(哨兵)機制,通過sentinel模式啟動redis后,自動監控master/slave的運行狀態,基本原理是:心跳機制+投票裁決
- 監控(Monitoring): Sentinel 會不斷地檢查你的主服務器和從服務器是否運作正常。
- 提醒(Notification): 當被監控的某個 Redis 服務器出現問題時, Sentinel 可以通過 API 向管理員或者其他應用程序發送通知。
- 自動故障遷移(Automatic failover): 當一個主服務器不能正常工作時, Sentinel 會開始一次自動故障遷移操作, 它會將失效主服務器的其中一個從服務器升級為新的主服務器, 并讓失效主服務器的其他從服務器改為復制新的主服務器; 當客戶端試圖連接失效的主服務器時, 集群也會向客戶端返回新主服務器的地址, 使得集群可以使用新主服務器代替失效服務器。
Sentinel的主從原理
- 服務器與Sentinel系統
- 故障轉義(Sentinel機制選出新的Master)
Redis Sentinel配置
- S-M Replication2個哨兵,1個主redis,2個從redis的方式,配置文件如下:
- 基本配置(列出的是具體修改的項,其他配置信息請保持不變)
sentinel_63791.conf 配置
- sentinel_63792.conf 配置
- 執行
- 檢查
- 查看進程
- 查看master的狀態
- 查看slave的狀態
Jedis Sentinel教程
- Maven依賴
- redis的配置文件
- Spring的配置文件
- 代碼中直接用redisTemplate調用
總結
以上是生活随笔為你收集整理的linux redis客户端_你见过能把Redis的主从复制讲这么明白的吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 入川备案取消了吗(入川备案取消)
- 下一篇: 酷比手机i50(酷比手机是哪个公司的)