【從0到1進階Redis】主從復制

筆記內容來自B站博主《遇見狂神說》:Redis視頻鏈接

1、概念

主從復制,是指將一個臺 Redis 服務器的數據,復制到其他的 Redis 服務器。前者稱為主節點(master/leader),后者稱為從節點(slave/follower);數據的復制是單向的,只能有主節點到從節點。Master以寫為主,Slave以讀為主。
默認情況下,每臺 Redis 服務器都是主節點;且一個主節點可以有多個從節點(或者沒有從節點),但一個從節點只能有一個主節點。(類似小黃人,小黃人(從節點)只會跟隨一個Boss(主節點),當Boss宕機,就會尋找追隨新的Boss)

2、主從復制的作用主要包括:

1、數據冗余:主從復制實現了數據的熱備份,是持久化之外的一種數據冗余方式。
2、故障恢復:當主節點出現問題時,可以有從節點提供服務,實現快速的故障恢復;實際上是一種服務的冗余。
3、負載均衡:在主從復制的基礎上,配合讀寫分離,可以有主節點提供寫服務,由從節點提供讀服務(即寫 Redis 數據時應用連接主節點,讀 Redis 數據時應用連接從節點),分擔服務器負載;尤其是在寫少讀多的場景下,通過多個從節點分擔讀負載。可以大大提高 Redis 服務器的并發量。
4、高可用基石:除了上述作用以外,主從復制還是哨兵和集群能夠實施的基礎,因此說主從復制時 Redis 高可用的基礎。

一般來說,要將 Redis 運用于工程項目中,只使用一臺 Redis 是萬萬不能的,原因如下:
1、從結構上,單個 Redis 服務器會發生單點故障,并且一臺服務器需要處理所有的請求負載,壓力較大;
2、從容量上,單個 Redis 服務器內容容量有限,就算一臺 Redis 服務器內存容量為256G,也不能將所有內存用作 Redis 存儲內存,一般來說,單臺 Redis 最大使用內存不應該超過20G。
電商網站上的商品,一般都是一次上傳,無數次瀏覽的,說專業點就是“多讀少寫”。
對于這種場景,我們可以使用如下這種結構:
在這里插入圖片描述

3、配置

只配置從庫,不用配置主庫。
這里我們測試配置一主二從。

在沒有配置主從復制之前,我們先看一下配置信息

info replication 查詢當前庫信息

### redis-6379.conf127.0.0.1:6379> info replication	# 查詢當前庫信息
# Replication
role:master	# 角色 主機master
connected_slaves:0	# 當前連接從機個數 0
master_replid:89f39314020994147d9efb674b44c30c79cc1065
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

Redis 是通過配置文件啟動的,我們需要配置一主二從,那么就需要啟動3個 Redis 端口。

我們先復制3個配置文件
在這里插入圖片描述
然后簡單配置一下各配置文件

### redis-6379.confport 6379	# 端口
daemonize yes	# 打開后臺運行
pidfile /var/run/redis/redis-server_6379.pid	# pid文件名
logfile /var/log/redis/redis-server_6379.log	# 日志文件名
dbfilename dump_6379.rdb	# rdb 文件名
### redis-6380.confport 6380	# 端口
daemonize yes	# 打開后臺運行
pidfile /var/run/redis/redis-server_6380.pid	# pid文件名
logfile /var/log/redis/redis-server_6380.log	# 日志文件名
dbfilename dump_6380.rdb	# rdb 文件名
### redis-6381.confport 6381	# 端口
daemonize yes	# 打開后臺運行
pidfile /var/run/redis/redis-server_6381.pid	# pid文件名
logfile /var/log/redis/redis-server_6381.log	# 日志文件名
dbfilename dump_6381.rdb	# rdb 文件名

修改完成之后,啟動我們的3個 Redis 服務器。可以看到三個 Redis 進程
在這里插入圖片描述

4、一主二從

默認情況下,每臺Redis 服務器都是主節點;我們一般情況下只用配置從機就好了。
一主二從我們設置主庫為端口6379,從庫為6380和6381。所以我們去6380和6381端口上配置就好,主機不用配置。
在這里插入圖片描述

測試

未配置前,各服務都為主機:
在這里插入圖片描述

使用 slaveof host port 命令用80和81上連接主機

### redis-6380.conf
127.0.0.1:6380> slaveof 127.0.0.1 6379
OK### redis-6381.conf
127.0.0.1:6381> slaveof 127.0.0.1 6379
OK

再次查看主從機配置信息:
在這里插入圖片描述
我們也可以使用 slaveof no one 讓自己變回主機
在這里插入圖片描述
注意!!!
真實的主從配置應該在配置文件中配置,這樣的話才是永久的。我們這里使用命令配置,是暫時的,關機就會失效。

配置文件中只需改如下就可以,如果主機設置了密碼需要配置上:
在這里插入圖片描述

細節

主機可以寫,從機不能寫只能讀,主機中的所有信息和數據,都會自動被從機保存。

主機寫:
在這里插入圖片描述

從機只能讀取內容,當執行寫操作的時候會報錯:
在這里插入圖片描述

復制原理

Slave 啟動成功連接到 Master 后會發送一個 sync 命令。
Master 接到命令,啟動后臺的存盤進程,同時收集所有接收到的用于修改數據集命令,在后臺進程執行完畢之后,Master 將傳送整個數據文件到 Slave,并完成一次完全同步。
全量復制:而 slave 服務在接收到數據庫文件數據后,將其存盤并加載到內存中。
增量復制:Master 繼續將新的所有收集到的修改命令依次傳給 Slave ,完成同步。
但是只要是重新連接Master ,一次完全同步(全量復制)將被自動執行。

下一篇:【從0到1進階Redis】主從復制 — 主從機宕機測試

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/45393.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45393.shtml
英文地址,請注明出處:http://en.pswp.cn/web/45393.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

this指向解析

先看題目: 第一題: var name window var person1 { name: person1, show1: function () { console.log(this.name) }, show2: () > console.log(th show3: function () { return function () { …

MFC之對話框--重繪元文件

文章目錄 實現示例展示需要繪制的窗口/位置控件位置更新下一次示例粗細滑動部分更新 重繪元文件(窗口變化內容消失)方法一:使用元文件方法二:兼容設備方法三:使用自定義類存儲繪圖數據除畫筆外功能處理畫筆功能處理 保…

springmvc1

以前的servlet程序: springmvc 不同的處理器:不同的方法或者處理類 所有的請求都會經過dispathcherservlet的doservice方法: mvc原理: 前端控制器:jsp或者什么東西

Python字符串基礎與高級操作

在Python中,字符串是不可變的數據類型,用于存儲一系列的字符。它們可以被創建、訪問、操作和格式化,但一旦創建,其內容就不能改變。下面是一篇關于Python字符串技術的詳細講解,包括創建、訪問、更新、轉義、運算符、格…

Phpstudy 2018 之xhcms搭建

1、由于直接訪問根目錄無法進入網站 2、所以采用搭建網站,第一使用系統服務模式、選擇php-5.4.45Apache模式 3、網站域名為本地ip地址或者127.0.0.1、端口8085 4、在navicat創建名字為xjcms的數據庫,并導入sql數據庫文件 5、瀏覽器輸入127.0.0.1:8085直接…

中風傷寒、感冒、六經辨證筆記

目錄 基礎傳經的原因傳經的過程及速度傳經的危害感冒時體痛頭痛的原因根據頭痛的位置辨經 太陽病太陽中風外風內熱 表虛感冒顆粒(桂枝葛根湯) 少陽病辨病總結傷寒論原文半表半里太陽為開,陽明為闔,少陽為樞膽的作用幫助腸胃消化、…

deepstream讀取mp4文件及不同類型視頻輸入bug解決

在deepstream中使用mp4文件,與rtsp類似,使用uridecodebin即可,(可見官方test.py文件) def create_source_bin(index, uri):print("Creating source bin")# Create a source GstBin to abstract this bins c…

定投投什么?

定投可以選擇的品種有銀行理財和基金 銀行理財目前有的品種有期限限制,不是那么公開的特點。如果說你想通過定投積累一筆低風險的,用于應急或者短期內要用的錢,可以選擇定投現金類銀行理財。 基金是最適合定投的產品, 基金分為…

【自然語言處理】面向新冠肺炎的社會計算應用

面向新冠肺炎的社會計算應用 1 任務目標 1.1 案例簡介 新冠肺炎疫情牽動著我們每一個人的心,在這個案例中,我們將嘗試用社會計算的方法對疫情相關的新聞和謠言進行分析,助力疫情信息研究。本次作業為開放性作業,我們提供了疫情…

C++ STL stable_sort用法

一&#xff1a;功能 對區間內元素進行排序&#xff0c;保證相等元素的順序&#xff08;穩定排序&#xff09; 二&#xff1a;用法 #include <iostream>struct Record {std::string label;int rank; };int main() {std::vector<Record> data {{"q", 1},…

代碼隨想錄第五十一天 | 300.最長遞增子序列 , 674. 最長連續遞增序列 , 718. 最長重復子數組

300.最長遞增子序列 看完想法&#xff1a;在dp遞推公式那里沒有太看得懂。首先dp【i】的狀態肯定是由前面的dp【0】到dp【i-1】推出的&#xff0c;但是dp【0】到dp【i-1】可以推出dp【i】有個前提就是(nums【i】 > nums【0到i-1任意一個】),例如nums【1】 2, nums【3】 5…

Tomcat下載安裝配置教程(零基礎超詳細)

「作者簡介」&#xff1a;冬奧會網絡安全中國代表隊&#xff0c;CSDN Top100&#xff0c;就職奇安信多年&#xff0c;以實戰工作為基礎著作 《網絡安全自學教程》&#xff0c;適合基礎薄弱的同學系統化的學習網絡安全&#xff0c;用最短的時間掌握最核心的技術。 Tomcat 1、下載…

外包干了1個月,技術明顯退步。。。

有一種打工人的羨慕&#xff0c;叫做“大廠”。 真是年少不知大廠香&#xff0c;錯把青春插稻秧。 但是&#xff0c;在深圳有一群比大廠員工更龐大的群體&#xff0c;他們頂著大廠的“名”&#xff0c;做著大廠的工作&#xff0c;還可以享受大廠的伙食&#xff0c;卻沒有大廠…

【輕松拿捏 】Java-static關鍵字(面試)

Java-static關鍵字 1. 定義和基本概念 回答要點&#xff1a; 示例回答&#xff1a; 2. static 變量 回答要點&#xff1a; 示例回答&#xff1a; 代碼示例&#xff1a; 3. static方法 回答要點&#xff1a; 示例回答&#xff1a; 代碼示例&#xff1a; 4. static 代…

Modbus協議簡介與Python實現

Modbus協議是工業自動化和控制系統中廣泛使用的通信協議。自1979年由Modicon(現為施耐德電氣的一部分)引入以來,它已經成為一種標準的通信協議,用于連接電子設備和傳感器。Modbus協議基于主從架構,支持多種物理層和傳輸模式,如串行通信(RS-232/RS-485)和以太網。 1. Mo…

10個使用Numba CUDA進行編程的例子

以下是10個使用Numba CUDA進行編程的例子&#xff0c;這些例子涵蓋了基本的向量加法、矩陣乘法以及其他一些常見操作&#xff1a; 向量加法 from numba import cuda import numpy as np cuda.jit def vector_add(a, b, c):i cuda.grid(1)if i < len(a):c[i] a[i] b[i] …

STM32智能交通監測系統教程

目錄 引言環境準備智能交通監測系統基礎代碼實現&#xff1a;實現智能交通監測系統 4.1 數據采集模塊 4.2 數據處理與控制模塊 4.3 通信與網絡系統實現 4.4 用戶界面與數據可視化應用場景&#xff1a;交通監測與管理問題解決方案與優化收尾與總結 1. 引言 智能交通監測系統通…

Linux--線程池(包含日志的解釋)

線程系列&#xff1a; Linux–線程的認識(一) Linux–線程的分離、線程庫的地址關系的理解、線程的簡單封裝&#xff08;二&#xff09; 線程的互斥&#xff1a;臨界資源只能在同一時間被一個線程使用 生產消費模型 信號量 線程池 線程池&#xff08;Thread Pool&#xff09;是…

Qt 統計圖編程

學習目標&#xff1a;Qt 折線圖&#xff0c;柱形圖和扇形統計圖編程 學習基礎 Qt QChart 曲線圖表操作-CSDN博客 學習內容 Qt中繪制三種常見的圖表非常方便, 主要步驟如下: 1. 折線圖: - 使用QLineSeries定義折線數據,添加多個坐標點 - 使用QValueAxis創建X軸和Y軸 - 將…

dockerfile配置和yml配置

dockerfile docker build 使用dockerfile自動構建鏡像文件 FROM python:3.9WORKDIR /appCOPY requirements.txt. RUN pip install -r requirements.txtCOPY..CMD ["python", "main.py"]docker build dockerifle自動構建拉取python3.9鏡像&#xff0c;并執…