Redis的主从复制(redis有密码版)——一主二仆、薪火相传、反客为主、哨兵模式

本文主要是介绍Redis的主从复制(redis有密码版)——一主二仆、薪火相传、反客为主、哨兵模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 搭建一主多从
    • 创建myredis文件夹并复制etc下的redis.conf到myredis下
    • 创建三个配置文件
    • 启动三个redis
    • info replication查看从属关系
    • 配置从机
    • 测试主机从机
  • 一主二仆
  • 薪火相传
  • 反客为主
  • 哨兵模式
    • 哨兵模式总结
  • 主从复制java中使用

搭建一主多从

创建myredis文件夹并复制etc下的redis.conf到myredis下

创建
mkdir /myredis
进入文件夹
cd /myredis
复制操作
cp /etc/redis.conf /myredis/redis.conf

可以看到刚开始ls没有的,复制完ls就可以看见redis.conf文件了
在这里插入图片描述

创建三个配置文件

创建第一个
vim redis6379.conf

配置里面
include /myredis/redis.conf
pidfile /var/run/redis_6379.pid
port 6379
dbfilename dump6379.rdb

然后再创建两个分别取名 redis6380.conf redis6381.conf
可以像这样复制 会快一点

cp redis6379.conf redis6380.conf
复制过来的记得修改里面的配置把6379全改成6380

ls
在这里插入图片描述
这时候就创建完成了

启动三个redis

在这里插入图片描述
成功了是这样的
在这里插入图片描述
如果6379和我显示的不一样 说明端口号被占用 先杀掉再开就行

info replication查看从属关系

在这里插入图片描述
可以看到 角色是主机,从机0

配置从机

在从机上执行slaveof 主机ip 主机端口号

在6380和6381上执行: slaveof 127.0.0.1 6379

**这里提一嘴如果redis配置了密码需要在从库的conf里添加
masterauth 密码 不然配置从库的时候从库显示有主库 主库却看不见从库
**

先配了一个 反正成功是这样的
在这里插入图片描述

测试主机从机

主机创建了 a1 v1
在这里插入图片描述
从机可以直接获取,且从机无法添加,只有读的功能
在这里插入图片描述

一主二仆

特点:

1.从机挂了之后需要重新(执行slaveof 主机ip 主机端口号) 不然从机就会变回主机
.
2.挂掉之后重新配置回从机时 会把主机数据从头到尾复制
.
3.主机挂了之后从机还是从机(不会变成主机) 并且显示主机状态为down 等主机恢复之后 主机就还是主机 从机也还是从机

薪火相传

比如6380是6379的从机 slaveof 127.0.0.1 6379
6381是6380的从机 slaveof 127.0.0.1 6380

特点:上一个Slave可以是下一个slave的Master,Slave同样可以接收其他 slaves的连接和同步请求,那么该slave作为了链条中下一个的master, 可以有效减轻master的写压力,去中心化降低风险

优点:减少压力
缺点:其中一个挂了,后面的都没了

反客为主

在从机设计slaveof no one 这是当主机挂了之后 这个从机会变成主机
但是变成的只是普通主机 如果是薪火相传的话他的从机还是他的从机
其他和他并列的从机不会变成他的从机

哨兵模式

首先前提是一主二从,二从是并列的而不是薪火相传
下面开始测试

  1. 在myredis下再建一个配置文件 sentinel.conf
  2. 打开配置类,在里面添加 sentinel monitor mymaster 127.0.0.1 6379 1
    其中mymaster为监控对象起的服务器名称,1 为至少有多少个哨兵同意迁移(只要有一个哨兵同意即可迁移)。
  3. 再添加sentinel auth-pass mymaster 密码
  4. redis-sentinel sentinel.conf 启动哨兵模式
  5. 关掉6379端口的主机
    在这里插入图片描述
  6. 这时哨兵模式启动了开始加载配置
    在这里插入图片描述

可以看到6379端口down了,新主机为6381,这是6380为6381从机
在这里插入图片描述
在这里插入图片描述
这时候如果重新启动6379端口,可以看到他已经变成从机了,主机为6381
在这里插入图片描述

哨兵模式总结

当主服务器down机时,新服务器选举是有策略的
选择条件从上到下依次
1.选择优先级靠前的
优先级在redis.conf中默认:replica-priority 100,值越小优先级越高
2.选择偏移量最大的
偏移量是指获得原主机数据最全的
3.选择runid最小的从服务
每个redis实例启动后都会随机生成一个40位的runid

主从复制java中使用

引用即可

private static JedisSentinelPool jedisSentinelPool=null;public static  Jedis getJedisFromSentinel(){
if(jedisSentinelPool==null){Set<String> sentinelSet=new HashSet<>();sentinelSet.add("192.168.11.103:26379");JedisPoolConfig jedisPoolConfig =new JedisPoolConfig();jedisPoolConfig.setMaxTotal(10); //最大可用连接数
jedisPoolConfig.setMaxIdle(5); //最大闲置连接数
jedisPoolConfig.setMinIdle(5); //最小闲置连接数
jedisPoolConfig.setBlockWhenExhausted(true); //连接耗尽是否等待
jedisPoolConfig.setMaxWaitMillis(2000); //等待时间
jedisPoolConfig.setTestOnBorrow(true); //取连接的时候进行一下测试 ping pongjedisSentinelPool=new JedisSentinelPool("mymaster",sentinelSet,jedisPoolConfig);
return jedisSentinelPool.getResource();}else{
return jedisSentinelPool.getResource();}
}

这篇关于Redis的主从复制(redis有密码版)——一主二仆、薪火相传、反客为主、哨兵模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/832814

相关文章

PostgreSQL数据库密码被遗忘时的操作步骤

《PostgreSQL数据库密码被遗忘时的操作步骤》密码遗忘是常见的用户问题,因此提供一种安全的遗忘密码找回机制是十分必要的,:本文主要介绍PostgreSQL数据库密码被遗忘时的操作步骤的相关资... 目录前言一、背景知识二、Windows环境下的解决步骤1. 找到PostgreSQL安装目录2. 修改p

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

Springboot整合Redis主从实践

《Springboot整合Redis主从实践》:本文主要介绍Springboot整合Redis主从的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言原配置现配置测试LettuceConnectionFactory.setShareNativeConnect

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

RabbitMQ工作模式中的RPC通信模式详解

《RabbitMQ工作模式中的RPC通信模式详解》在RabbitMQ中,RPC模式通过消息队列实现远程调用功能,这篇文章给大家介绍RabbitMQ工作模式之RPC通信模式,感兴趣的朋友一起看看吧... 目录RPC通信模式概述工作流程代码案例引入依赖常量类编写客户端代码编写服务端代码RPC通信模式概述在R

Redis指南及6.2.x版本安装过程

《Redis指南及6.2.x版本安装过程》Redis是完全开源免费的,遵守BSD协议,是一个高性能(NOSQL)的key-value数据库,Redis是一个开源的使用ANSIC语言编写、支持网络、... 目录概述Redis特点Redis应用场景缓存缓存分布式会话分布式锁社交网络最新列表Redis各版本介绍旧

Java如何从Redis中批量读取数据

《Java如何从Redis中批量读取数据》:本文主要介绍Java如何从Redis中批量读取数据的情况,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一.背景概述二.分析与实现三.发现问题与屡次改进3.1.QPS过高而且波动很大3.2.程序中断,抛异常3.3.内存消

Redis中的Lettuce使用详解

《Redis中的Lettuce使用详解》Lettuce是一个高级的、线程安全的Redis客户端,用于与Redis数据库交互,Lettuce是一个功能强大、使用方便的Redis客户端,适用于各种规模的J... 目录简介特点连接池连接池特点连接池管理连接池优势连接池配置参数监控常用监控工具通过JMX监控通过Pr

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3

python操作redis基础

《python操作redis基础》Redis(RemoteDictionaryServer)是一个开源的、基于内存的键值对(Key-Value)存储系统,它通常用作数据库、缓存和消息代理,这篇文章... 目录1. Redis 简介2. 前提条件3. 安装 python Redis 客户端库4. 连接到 Re