前言

Redis的下载安装可参考Centos安装配置Redis6.x,Centos和Debian的步骤基本类似,或自行在网上搜索相关资料
注意:远程连接需放开相应端口

主从

搭建一个一主二从的主从模式

处理conf文件

#进入redis所在目录
cd /tools/redis/redis6
#创建主从配置文件所在目录
mkdir master-slave
#复制一份conf文件到目标目录
cp redis.conf master-slave/redis-master.conf
#切换至目标你目录
cd master-slave
  • redis-master.conf中需要注意的配置
#开放连接,可以指定连接的ip,测试用我直接全开放了
bind 0.0.0.0
#指定启动端口(不推荐用默认的16379)
port 16379
#是否开启保护模式
protected-mode yes
#守护线程模式
daemonize yes
#指定日志文件位置
logfile "/tools/redis/redis6/master-slave/master.log"
#用户管理
user default off
user root on +@all  allkeys >root
#指定认证密码
requirepass root
#指定master密码
masterauth root
指定rdb位置及文件名
dir ./ 
dbfilename dump-master.rdb
#主节点可读可写
replica-read-only no
  • 复制两份从配置文件
cp redis-master.conf redis-slave1.conf
cp redis-master.conf redis-slave2.conf
  • redis-slave*.conf注意事项(和master不同的)
port 16380
logfile "/tools/redis/redis6/master-slave/slave1.log"
dbfilename dump-slave-16380.rdb
#指定master登录用户
masteruser root
replica-read-only yes
replicaof your_master_ip your_master_port

启动redis

此部分可以提取成一个sh文件,方便后续启动
start-ms.sh

#启动主节点
../src/redis-server redis-master.conf
#启动从节点1
../src/redis-server redis-slave1.conf
#启动从节点2
../src/redis-server redis-slave2.conf
root@iZuf67owyzd0wopzvdfgsyZ:/tools/redis/redis6/master-slave# sh start-ms.sh
#查看redis运行情况,如果有没启动起来的可以去相应的log文件中查看日志
root@iZuf67owyzd0wopzvdfgsyZ:/tools/redis/redis6/master-slave# ps -aux|grep redis
root      799730  0.1  0.5  54176  9244 ?        Ssl  15:17   0:04 ../src/redis-server 0.0.0.0:16379
root      804110  0.1  0.5  54176  9328 ?        Ssl  15:29   0:03 ../src/redis-server 0.0.0.0:16380
root      804146  0.1  0.5  54176  9300 ?        Ssl  15:29   0:03 ../src/redis-server 0.0.0.0:16381
root      821441  0.0  0.1   6332  2036 pts/0    S+   16:19   0:00 grep redis

测试

  • redis-cli连接主节点,查看相关信息,并写一条数据
root@iZuf67owyzd0wopzvdfgsyZ:/tools/redis/redis6/master-slave# ../src/redis-cli  -p 16379
127.0.0.1:16379> auth root root
OK
127.0.0.1:16379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=16380,state=online,offset=4364,lag=0
slave1:ip=127.0.0.1,port=16381,state=online,offset=4364,lag=1
master_failover_state:no-failover
master_replid:022605e2b857e08361cf180f174ef534059df9dd
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:4364
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:4364
127.0.0.1:16379> keys *
1) "k1"
2) "k2"
127.0.0.1:16379> set k3 v3
OK
127.0.0.1:16379> exit
  • redis-cli连接从节点,查看相关信息,可获取主节点数据,不可写数据
root@iZuf67owyzd0wopzvdfgsyZ:/tools/redis/redis6/master-slave# ../src/redis-cli  -p 16380
127.0.0.1:16380> auth root root
OK
127.0.0.1:16380> keys *
1) "k3"
2) "k1"
3) "k2"
127.0.0.1:16380> set k4 v4
(error) READONLY You can't write against a read only replica.
127.0.0.1:16380> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:16379
master_link_status:up
master_last_io_seconds_ago:9
master_sync_in_progress:0
slave_read_repl_offset:4603
slave_repl_offset:4603
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:022605e2b857e08361cf180f174ef534059df9dd
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:4603
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:529
repl_backlog_histlen:4075
127.0.0.1:16380> exit

哨兵

启动主从后,可以进行哨兵的配置

处理config文件

  • 创建并进入sentinel目录
mkdir sentinel
cd sentinel
  • 创建三个哨兵的conf
vim sentinel-26379.conf

sentinel-26379.conf

bind 0.0.0.0
port 26379
protected-mode no
sentinel monitor mymaster 127.0.0.1 16379 2
sentinel auth-user mymaster root
sentinel auth-pass mymaster root
requirepass root
vim sentinel-26380.conf

sentinel-26380.conf

bind 0.0.0.0
port 26380
protected-mode no
sentinel monitor mymaster 127.0.0.1 16379 2
sentinel auth-user mymaster root
sentinel auth-pass mymaster root
requirepass root
vim sentinel-26381.conf

sentinel-26381.conf

bind 0.0.0.0
port 26381
protected-mode no
sentinel monitor mymaster 127.0.0.1 16379 2
sentinel auth-user mymaster root
sentinel auth-pass mymaster root
requirepass root

启动

  • 创建启动脚本
vim start-sentinel.sh

start-sentinel.sh

# 启动第一个哨兵实例,并将输出重定向到日志文件,且在后台运行
nohup ../src/redis-server sentinel-26379.conf --sentinel > sentinel-26379.log 2>&1 &
echo "Sentinel 26379 started"
# 启动第二个哨兵实例,并将输出重定向到日志文件,且在后台运行
nohup ../src/redis-server sentinel-26380.conf --sentinel > sentinel-26380.log 2>&1 &
echo "Sentinel 26380 started"# 启动第三个哨兵实例,并将输出重定向到日志文件,且在后台运行
nohup ../src/redis-server sentinel-26381.conf --sentinel > sentinel-26381.log 2>&1 &
echo "Sentinel 26381 started"
  • 运行脚本
root@hecs-166225:/tools/redis/redis6/sentinel# sh start-sentinel.sh
Sentinel 26379 started
Sentinel 26380 started
Sentinel 26381 started
  • 查看运行状态
root@hecs-166225:/tools/redis/redis6/sentinel# ps -aux|grep redis
root      378240  0.1  0.2  51616  9328 ?        Ssl  17:36   0:08 ../src/redis-server 0.0.0.0:16379
root      378246  0.0  0.2  51616  9172 ?        Ssl  17:36   0:06 ../src/redis-server 0.0.0.0:16380
root      378252  0.0  0.2  51616  9144 ?        Ssl  17:36   0:06 ../src/redis-server 0.0.0.0:16381
root      414671  0.1  0.3  51616 12340 pts/3    Sl   19:45   0:00 ../src/redis-server 127.0.0.1:26379 [sentinel]
root      414672  0.0  0.3  51616 12168 pts/3    Sl   19:45   0:00 ../src/redis-server 127.0.0.1:26380 [sentinel]
root      414673  0.0  0.3  51616 12160 pts/3    Sl   19:45   0:00 ../src/redis-server 127.0.0.1:26381 [sentinel]
root      414766  0.0  0.0   6332  2120 pts/3    S+   19:45   0:00 grep redis

测试

root@hecs-166225:/tools/redis/redis6/src# redis-cli -p 26379
127.0.0.1:26379> auth root
OK
127.0.0.1:26379> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=127.0.0.1:16379,slaves=2,sentinels=3

终止16379的redis进程,过一至两分钟(sentinel.conf中sentinel down-after-milliseconds属性影响,默认30s)重新执行info命令,发现已自动切换

127.0.0.1:26379> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=127.0.0.1:16381,slaves=2,sentinels=3

查看sentinel执行日志,也可以看到16379down掉后,16381被选举为主节点

root@iZuf67owyzd0wopzvdfgsyZ:/tools/redis/redis6/sentinel# tail -fn 100 sentinel-26379.log
1943239:X 19 Jun 2025 15:07:28.249 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1943239:X 19 Jun 2025 15:07:28.249 # Redis version=6.2.9, bits=64, commit=00000000, modified=0, pid=1943239, just started
1943239:X 19 Jun 2025 15:07:28.249 # Configuration loaded
1943239:X 19 Jun 2025 15:07:28.249 * monotonic clock: POSIX clock_gettime
1943239:X 19 Jun 2025 15:07:28.250 * Running mode=sentinel, port=26379.
1943239:X 19 Jun 2025 15:07:28.250 # Sentinel ID is 3579c0b96dabe452b8f53e795d9b894ea381c8b3
1943239:X 19 Jun 2025 15:07:28.250 # +monitor master mymaster 127.0.0.1 16379 quorum 2
1943239:X 19 Jun 2025 15:08:49.682 # +sdown master mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:49.759 # +odown master mymaster 127.0.0.1 16379 #quorum 2/2
1943239:X 19 Jun 2025 15:08:49.759 # +new-epoch 1
1943239:X 19 Jun 2025 15:08:49.759 # +try-failover master mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:49.764 # +vote-for-leader 3579c0b96dabe452b8f53e795d9b894ea381c8b3 1
1943239:X 19 Jun 2025 15:08:49.776 # 9f69ca329a02657930f62ba9c4e4a29e98309796 voted for 3579c0b96dabe452b8f53e795d9b894ea381c8b3 1
1943239:X 19 Jun 2025 15:08:49.777 # c1a06f7ca5fa19610948005bc5eb10936fc17ea7 voted for 3579c0b96dabe452b8f53e795d9b894ea381c8b3 1
1943239:X 19 Jun 2025 15:08:49.847 # +elected-leader master mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:49.847 # +failover-state-select-slave master mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:49.919 # +selected-slave slave 127.0.0.1:16381 127.0.0.1 16381 @ mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:49.919 * +failover-state-send-slaveof-noone slave 127.0.0.1:16381 127.0.0.1 16381 @ mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:50.010 * +failover-state-wait-promotion slave 127.0.0.1:16381 127.0.0.1 16381 @ mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:50.469 # +promoted-slave slave 127.0.0.1:16381 127.0.0.1 16381 @ mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:50.469 # +failover-state-reconf-slaves master mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:50.535 * +slave-reconf-sent slave 127.0.0.1:16380 127.0.0.1 16380 @ mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:50.887 # -odown master mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:51.516 * +slave-reconf-inprog slave 127.0.0.1:16380 127.0.0.1 16380 @ mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:51.516 * +slave-reconf-done slave 127.0.0.1:16380 127.0.0.1 16380 @ mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:51.568 # +failover-end master mymaster 127.0.0.1 16379
1943239:X 19 Jun 2025 15:08:51.568 # +switch-master mymaster 127.0.0.1 16379 127.0.0.1 16381
1943239:X 19 Jun 2025 15:08:51.568 * +slave slave 127.0.0.1:16380 127.0.0.1 16380 @ mymaster 127.0.0.1 16381
1943239:X 19 Jun 2025 15:08:51.568 * +slave slave 127.0.0.1:16379 127.0.0.1 16379 @ mymaster 127.0.0.1 16381
1943239:X 19 Jun 2025 15:09:21.607 # +sdown slave 127.0.0.1:16379 127.0.0.1 16379 @ mymaster 127.0.0.1 16381

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/87518.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/87518.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/87518.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚实交融:数字孪生如何重塑交通与公路勘察设计的未来

当每一条道路、每一座桥梁、每一盏信号灯都在数字世界获得“永生副本”,交通系统从被动响应迈入主动预演的纪元 一、数字孪生的核心定义:超越镜像的动态认知引擎 数字孪生(Digital Twin)并非简单的三维可视化模型,而是…

vector模拟实现中的迭代器失效问题

首先来看一组代码: iterator insert(iterator pos, const T& x) {// 扩容if (_finish _end_of_storage){size_t len pos - _stare;reserve(capacity() 0 ? 4 : capacity() * 2);pos _stare len;}iterator end _finish - 1;while (end > pos){*(end…

java 设计模式_行为型_22模板模式

22.模板模式 模板方法(Template Method)作为Java的设计模式之一,一个词概括其优势特点那就是:抽象步骤 首先我们应该抽出共通的东西做一个父类(Base类),其次具体的蛋糕制作由子类进一步实现&…

随记:在springboot中websocket的使用

我现在有两种方法 第一种:使用java封装的这个包下的javax.websocket.* 先配置这个配置类 import com.alibaba.nacos.common.utils.CollectionUtils; import org.springframework.stereotype.Component;import javax.websocket.HandshakeResponse; import javax.w…

技术文章大纲:SpringBoot自动化部署实战

技术文章大纲:SpringBoot自动化部署实战 概述 自动化部署的背景与意义SpringBoot在现代化部署中的优势常见自动化部署工具与方案概览(Jenkins、Docker、K8s等) 环境准备 基础工具要求:JDK、Maven/Gradle、Git服务器环境配置&a…

FastAdmin按钮类功能全解析 class 属性定义不同的交互行为

在 FastAdmin 中,超链接的 class 属性用于定义不同的交互行为和样式。以下是常见 class 配置的用途和区别: btn-dialog 用于触发弹出对话框行为。点击带有此 class 的链接或按钮时,FastAdmin 会自动加载指定的 URL 内容并在模态框中显示。通…

python3字典对象实现解析

文章目录 前言Raymond的方案字典结构字典创建字典插入插入空字典PyDictKeysObject的创建设置索引存储entry 插入非空字典调整大小字典查找联合字典插入 字典查询字典删除 前言 本来以为python字典的实现就是一个哈希表的普通实现,所以在学习基本类型时没去仔细研究…

Word2Vec介绍

前言 当今的大语言模型非常智能,但是你有没有想过这些事情: 机器是怎么理解“国王”和“王后”之间的关系? “猫”和“狗”是怎么在 AI 中“相似以及区分”的? 文本又是怎么变成模型能读懂的数字? 这一切&#xf…

Rsync+sersync实现数据实时同步(小白的“升级打怪”成长之路)

目录 一、rsync部署 push推数据 1、编写rsync配置文件 2、备份测试 3、检验结果 二、rsyncsersync 实现数据实时同步 1、安装sersync服务 2、检验结果 pull拉取数据 1、编写rsync配置文件 2、检验结果 三、脚本编写 1、客户端脚本编写 2、服务器脚本编写 一、rsy…

用 python 开发一个可调用工具的 AI Agent,实现电脑配置专业评价

在人工智能时代,AI Agent凭借其强大的任务处理能力,逐渐成为开发人员手中的得力工具。今天,我们就来一起动手,用Python打造一个能够调用工具的AI Agent,实现根据电脑信息对电脑配置进行专业评价的功能。 一、项目创建…

WSL 安装使用和常用命令

参考官方使用说明&#xff1a; https://learn.microsoft.com/zh-cn/windows/wsl/ 安装wsl: wsl --install --no-distribution --no-distribution&#xff1a;安装 WSL 时不要安装分发版 更新 wsl: wsl --update 设置wsl 默认版本&#xff1a; wsl --set-default-version <…

720全景VR拍摄制作实战教程

720全景VR拍摄制作实战教程 720全景VR拍摄制作是近年来兴起的一种沉浸式影像制作技术。它通过多角度拍摄&#xff0c;并将画面拼接成一个全景视角&#xff0c;使观众获得身临其境的观看体验。本教程将带你从准备阶段到拍摄阶段&#xff0c;再到后期处理阶段&#xff0c;一步步…

什么真正的云原生开发?如何区别本地开发后部署到云端?

以下是关于云原生开发的深度解析&#xff0c;以及与本地开发后迁移上云的本质区别&#xff1a; 一、真正的云原生开发&#xff1a;从理念到实践的全面革新 1. 定义与核心思想 云原生开发是一种以云计算能力为核心的架构设计和开发方法论&#xff0c;其本质是让应用从诞生之初…

从代码学习深度学习 - 词的相似性和类比任务 PyTorch版

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言加载预训练词向量TokenEmbedding 类详解预训练词向量简介 (GloVe)具体含义总结建议应用预训练词向量词相似度knn 函数get_similar_tokens 函数相似词查找示例词类比get_analogy 函数词类比任务…

ubuntu 22.04 安装部署elk(elasticsearch/logstash/kibana) 7.10.0详细教程

安装部署elk7.10.0详细教程 一、安装jdk 11环境二、安装elasticsearch 7.10.0三、安装kibana 7.10.0四、安装logstash 7.10.0五、安装ik7.10.0分词六、开启安全功能1. 开启用户名密码登录2. 开启es安全加密通信3. 开启Kibana安全功能 七、注意事项和常见错误八、其它操作及命令…

技术文章: 基板的吸水率

PCB基板或覆铜板的吸水率是一个重要的性能指标&#xff0c;它衡量了覆铜板在特定条件下&#xff08;通常是浸水后&#xff09;吸收水分的能力&#xff0c;通常用指定条件下吸水后与吸水前相比&#xff0c;质量增加的百分比来表示。当材料暴露扎起在潮湿空气中或浸没在水中时其抵…

九日集训第三天

目录 搜索旋转排序数组 搜索旋转排序数组|| 寻找旋转排序中的数组最小值 爬楼梯 斐波那契数 第N个泰波那契数 差的绝对值为K的数对数目 猜数字 拿硬币 山峰数组的峰顶索引 搜索旋转排序数组 class Solution { public:int search(vector<int>& nums, int t…

CppCon 2017 学习:folly::Function A Non-copyable Alternative to std::function

你说的内容是关于 C 中 可调用类型&#xff08;Callable Types&#xff09; 的基础知识&#xff0c;我帮你理清并补充理解。 Callable Types&#xff08;可调用类型&#xff09;简介 C 中任何可以用 () 括号操作符“调用”的对象&#xff0c;都叫做 可调用类型。典型包括&…

PyTorch 中Tensor常用数据结构(int, list, numpy array等)互相转换和实战示例

在 PyTorch 中&#xff0c;tensor 是一种强大且灵活的数据结构&#xff0c;可以与多种 Python 常用数据结构&#xff08;如 int, list, numpy array 等&#xff09;互相转换。下面是详细解释和代码示例&#xff1a; 1. Tensor ↔ int / float 转为 int / float&#xff08;前提…

计算机网络与数据通信基础

第一章 计算机网络概述 1. 计算机网络的核心概念 1.1 定义 将 地理分散 的、具有 独立处理能力 的计算机系统&#xff08;主机/Host&#xff09;&#xff0c;通过 传输介质 与 网络设备 互连&#xff0c;在 网络协议 和 软件 支持下实现 资源共享 与 数据通信 的系统。 关键术…