Redis集群(主從)

1.主從集群

集群結構:

一.單機安裝redis
1.上傳壓縮包并解壓,編譯

tar -xzf redis-6.2.4.tar.gz
cd redis-6.2.4
make && make install
2.修改redis.config的配置并啟動redis
# 綁定地址,默認是127.0.0.1,會導致只能在本地訪問。修改為0.0.0.0則可以在任意IP訪問
bind 0.0.0.0
# 保護模式,關閉保護模式
protected-mode no
# 數據庫數量,設置為1
databases 1
redis-server redis.conf
二.準備實例和配置

要在同一臺虛擬機開啟3個實例,必須準備三份不同的配置文件和目錄,配置文件所在目錄也就是工作目錄。

1.創建目錄

我們創建三個文件夾,名字分別叫7001、7002、7003:

# 進入/tmp目錄
cd /tmp
# 創建目錄
mkdir 7001 7002 7003
2.恢復原始配置
# 開啟RDB
# save ""
save 3600 1
save 300 100
save 60 10000# 關閉AOF
appendonly no
3.拷貝配置文件到每個實例目錄
# 方式一:逐個拷貝
cp redis-6.2.4/redis.conf 7001
cp redis-6.2.4/redis.conf 7002
cp redis-6.2.4/redis.conf 7003# 方式二:管道組合命令,一鍵拷貝
echo 7001 7002 7003 | xargs -t -n 1 cp redis-6.2.4/redis.conf
4.修改每個實例的端口、工作目錄

修改每個文件夾內的配置文件,將端口分別修改為7001、7002、7003,將rdb文件保存位置都修改為自己所在目錄(在/tmp目錄執行下列命令):

sed -i -e 's/6379/7001/g' -e 's/dir .\//dir \/tmp\/7001\//g' 7001/redis.conf
sed -i -e 's/6379/7002/g' -e 's/dir .\//dir \/tmp\/7002\//g' 7002/redis.conf
sed -i -e 's/6379/7003/g' -e 's/dir .\//dir \/tmp\/7003\//g' 7003/redis.conf
5.修改每個實例的聲明IP????????

虛擬機本身有多個IP,為了避免將來混亂,我們需要在redis.conf文件中指定每一個實例的綁定ip信息

# 逐一執行
sed -i '1a replica-announce-ip ip' 7001/redis.conf
sed -i '1a replica-announce-ip ip' 7002/redis.conf
sed -i '1a replica-announce-ip ip' 7003/redis.conf
三.開啟主從關系
一.啟動三個redis實例
# 第1個
redis-server 7001/redis.conf
# 第2個
redis-server 7002/redis.conf
# 第3個
redis-server 7003/redis.conf

一鍵停止:

printf '%s\n' 7001 7002 7003 | xargs -I{} -t redis-cli -p {} shutdown

現在三個實例還沒有任何關系,要配置主從可以使用replicaof 或者slaveof(5.0以前)命令。

有臨時和永久兩種模式:

  • 修改配置文件(永久生效)

    • 在redis.conf中添加一行配置:slaveof <masterip> <masterport>

  • 使用redis-cli客戶端連接到redis服務,執行slaveof命令(重啟后失效):

slaveof <masterip> <masterport>

在5.0以后新增命令replicaof,與salveof效果一致。

二.slaveof命令連接

連接7002與7003端口,并與7001做連接

# 連接 7002
redis-cli -p 7002
# 執行slaveof
slaveof ip 7001

連接7001接口查看狀態

# 連接 7001
redis-cli -p 7001
# 查看狀態
info replication

三.測試:

可以發現,只有在7001這個master節點上可以執行寫操作,7002和7003這兩個slave節點只能執行讀操作。

四:數據同步原理(全量同步,增量同步)

master通過Replication Idoffset來判斷是否為第一次同步數據

Replication Id:簡稱replid,是數據集的標記,id一致表示是同一數據集,每一個master都有唯一的replid,slave會繼承master節點的replid。

offset:偏移量,記錄在repl_baklog中的數據增多而逐漸增大。slave完成同步時也會記錄當前同步的offset,如果slave的offset小于master的offset,說明slave數據落后master,需要更新。

因此slave做數據同步,必須向master聲明自己的replication id和offset,master才可以判斷到底需要同步那些數據。

增量同步:將repl_baklog與offset之間記錄的命令發送給slave去同步數據。

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

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

相關文章

Tomcat布署及優化-----JDK和Tomcat

1.Tomcat簡介 Tomcat 是 Java 語言開發的&#xff0c;Tomcat 服務器是一個免費的開放源代碼的 Web 應用服務器&#xff0c;Tomcat 屬于輕量級應用服務器&#xff0c;在中小型系統和并發訪問用戶不是很多的場合下被普遍使用&#xff0c;是開發和調試 JSP 程序的首選。一般來說&…

C++ //練習 10.2 重做上一題,但讀取string序列存入list中。

C Primer&#xff08;第5版&#xff09; 練習 10.2 練習 10.2 重做上一題&#xff0c;但讀取string序列存入list中。 環境&#xff1a;Linux Ubuntu&#xff08;云服務器&#xff09; 工具&#xff1a;vim 代碼塊 /******************************************************…

Vue前端加密后的數據發送到服務器端

首先&#xff0c;定義了一個名為 PUBLIC_KEY 的公鑰和一個名為 PRIVATE_KEY 的私鑰。然后&#xff0c;通過 JSEncrypt 創建了兩個實例 encrypt 和 decrypt&#xff0c;分別用于加密和解密操作。 對于加密操作&#xff0c;調用了 encrypt.setPublicKey() 方法設置公鑰&#xff…

升級Centos7的openssh到openssh-9.6p1版本 shell腳本 漏掃整改

升級Centos7的openssh到openssh-9.6p1版本 shell腳本 漏掃整改 #!/bin/bash# 聲明: 該腳本適用于升級Centos7的openssh到openssh-9.6p1版本# 定義源碼包版本號 OPENSSH_VERSIONopenssh-9.6p1 OPENSSL_VERSIONopenssl-3.2.1 ZILB_VERSIONzlib-1.3.1# 安裝編譯環境 yum -y insta…

【前端面試題5】利用 border 屬性畫一個三角形

舉例1&#xff1a;利用 border 屬性畫一個三角形&#xff08;小技巧&#xff09; 完整代碼如下&#xff1a; div{width: 0;height: 0;border: 50px solid transparent;border-top-color: red;border-bottom: none; }步驟如下&#xff1a; &#xff08;1&#xff09;當我們設…

【QT+QGIS跨平臺編譯】之五十六:【QGIS_CORE跨平臺編譯】—【qgsmeshcalclexer.cpp生成】

文章目錄 一、Flex二、生成來源三、構建過程一、Flex Flex (fast lexical analyser generator) 是 Lex 的另一個替代品。它經常和自由軟件 Bison 語法分析器生成器 一起使用。Flex 最初由 Vern Paxson 于 1987 年用 C 語言寫成。 “flex 是一個生成掃描器的工具,能夠識別文本中…

Android 拍照本地圖片選擇框架適配

前言 通常技術方案的選擇、會帶來后續一些不可控的東西&#xff0c;這也是沒法避免的&#xff0c;程序開發者中同時面對、測試、領導、產品各種要求。同時在網絡上查找的資料也只是很舊的&#xff0c;不一定適合新設備&#xff0c;需要推倒重新弄 1、解決方案通過意圖選擇器做…

day6 數組 嵌套循環

1&#xff1a;打印楊輝三角 91 int arr[6][6];92 int i,j0;93 for(i0;i<6;i)94 {95 for(j0;j<i;j) 96 {97 if(j0||ij)98 {99 arr[i][j]1; …

2024-3-4 如何寫出具有python風格的代碼

寫出具有python風格的代碼 什么是python風格如何寫出具有python風格的自定義數據類型 什么是python風格 python風格是指自定義的數據類型表現得得與內置類型一樣。比如&#xff0c;我創建了一個類&#xff0c;它的實例不用調用類的方法就可以實現迭代、切片&#xff0c;可以直…

推特API(Twitter API)對接說明,用戶code To Token換取

前期準備 提前準備、說明&#xff1a;目前對接推特api開發門戶分為3個版本&#xff0c;分別是免費的&#xff0c;100美金一個月的基礎版以及5000美金一個月的企業版&#xff0c;免費的目前就兩個接口可以調用&#xff0c;所以想要對接和使用推特最基本的也需要付100美元一個月…

百度百科人物創建要求是什么?

百度百科作為我國最大的中文百科全書&#xff0c;其收錄的人物詞條要求嚴謹、客觀、有權威性。那么&#xff0c;如何撰寫一篇高質量的人物詞條呢&#xff1f;本文伯樂網絡傳媒將從內容要求、注意事項以及創建流程與步驟三個方面進行詳細介紹。 一、內容要求 1. 基本信息&#…

什么是 web 應用的 type-ahead search help

在 Web 前端設計領域&#xff0c;type-ahead search help&#xff08;又稱為自動完成或即時搜索&#xff09;是一種用戶界面功能&#xff0c;它能夠在用戶輸入搜索詞的同時&#xff0c;實時提供搜索建議或結果。這種功能極大地提升了用戶體驗&#xff0c;因為它可以幫助用戶快速…

LeetCode每日一題【c++版】- 用隊列實現棧與用棧實現隊列

用隊列實現棧 題目描述 請你僅使用兩個隊列實現一個后入先出&#xff08;LIFO&#xff09;的棧&#xff0c;并支持普通棧的全部四種操作&#xff08;push、top、pop 和 empty&#xff09;。 實現 MyStack 類&#xff1a; void push(int x) 將元素 x 壓入棧頂。int pop() 移除…

Studio One 6永久激活版 附完整圖文安裝破解教程

Studio One 6是一款功能強大的音樂制作和錄音軟件&#xff0c;專為Mac操作系統設計。它提供了多軌錄音和混音、MIDI音樂制作、實時效果和處理、VST插件支持以及高級編輯和編排等豐富的功能。無論是專業音樂制作人還是音樂愛好者&#xff0c;都可以使用Studio One 6來創建和編輯…

程序員英語詞匯寶典(建議收藏)

很多小伙伴說&#xff0c;英文不好能不能學習編程&#xff0c;我個人的看法是英文不好&#xff0c;并不影響你學習編程&#xff0c;但有可能會影響到你的編程上限&#xff0c;因為一些最新的文檔都是英文的。如果你想成為一個編程大牛&#xff0c;那么英文還是很有必要的。今天…

cocos-lua定時器用法

本文介紹cocos-lua(非Quick-cocos)的定時器用法 定時器按是否會隨節點銷毀&#xff0c;可分為節點調度器和全局調度器 一.節點調度器 frameworks\cocos2d-x\cocos\scripting\lua-bindings\script\cocos2d\deprecated.lua中實現了了schedule和 performWithDelay 1.1.schedul…

基礎真空技術外國文獻Fundamentals of Vacuum Technology

基礎真空技術外國文獻Fundamentals of Vacuum Technology

道路積水監測站——確保道路暢通和行車安全

TH-JS1道路積水監測站是一種專門用于監測城市道路積水情況的設備&#xff0c;旨在保障城市道路安全和防止水患對交通造成的不利影響。這些監測站通過實時檢測和記錄道路積水數據&#xff0c;為城市管理部門提供重要信息&#xff0c;以便及時采取應對措施&#xff0c;確保道路暢…

vue diff算法介紹

Vue.js 的 diff 算法是一種用于虛擬 DOM 比較的高效算法&#xff0c;其核心目的是在數據變更時&#xff0c;能夠最小化 DOM 操作&#xff0c;提高更新性能。以下是關于 Vue diff 算法的介紹&#xff1a; 1. 算法目標&#xff1a; Vue 的 diff 算法旨在比較新舊虛擬節點&#…

990-29產品經理:IT risk management process IT風險管理流程

IT risk management process IT風險管理流程 In business, IT risk management entails a process of identifying, monitoring and managing potential information security or technology risks with the goal of mitigating or minimising their negative impact. Exampl…