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

相关文章

Redis实现延迟任务的三种方法详解

《Redis实现延迟任务的三种方法详解》延迟任务(DelayedTask)是指在未来的某个时间点,执行相应的任务,本文为大家整理了三种常见的实现方法,感兴趣的小伙伴可以参考一下... 目录1.前言2.Redis如何实现延迟任务3.代码实现3.1. 过期键通知事件实现3.2. 使用ZSet实现延迟任务3.3

Python从零打造高安全密码管理器

《Python从零打造高安全密码管理器》在数字化时代,每人平均需要管理近百个账号密码,本文将带大家深入剖析一个基于Python的高安全性密码管理器实现方案,感兴趣的小伙伴可以参考一下... 目录一、前言:为什么我们需要专属密码管理器二、系统架构设计2.1 安全加密体系2.2 密码强度策略三、核心功能实现详解

Redis分片集群的实现

《Redis分片集群的实现》Redis分片集群是一种将Redis数据库分散到多个节点上的方式,以提供更高的性能和可伸缩性,本文主要介绍了Redis分片集群的实现,具有一定的参考价值,感兴趣的可以了解一... 目录1. Redis Cluster的核心概念哈希槽(Hash Slots)主从复制与故障转移2.

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

Redis 中的热点键和数据倾斜示例详解

《Redis中的热点键和数据倾斜示例详解》热点键是指在Redis中被频繁访问的特定键,这些键由于其高访问频率,可能导致Redis服务器的性能问题,尤其是在高并发场景下,本文给大家介绍Redis中的热... 目录Redis 中的热点键和数据倾斜热点键(Hot Key)定义特点应对策略示例数据倾斜(Data S

SpringBoot如何通过Map实现策略模式

《SpringBoot如何通过Map实现策略模式》策略模式是一种行为设计模式,它允许在运行时选择算法的行为,在Spring框架中,我们可以利用@Resource注解和Map集合来优雅地实现策略模式,这... 目录前言底层机制解析Spring的集合类型自动装配@Resource注解的行为实现原理使用直接使用M

redis+lua实现分布式限流的示例

《redis+lua实现分布式限流的示例》本文主要介绍了redis+lua实现分布式限流的示例,可以实现复杂的限流逻辑,如滑动窗口限流,并且避免了多步操作导致的并发问题,具有一定的参考价值,感兴趣的可... 目录为什么使用Redis+Lua实现分布式限流使用ZSET也可以实现限流,为什么选择lua的方式实现

Redis中管道操作pipeline的实现

《Redis中管道操作pipeline的实现》RedisPipeline是一种优化客户端与服务器通信的技术,通过批量发送和接收命令减少网络往返次数,提高命令执行效率,本文就来介绍一下Redis中管道操... 目录什么是pipeline场景一:我要向Redis新增大批量的数据分批处理事务( MULTI/EXE

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

Redis中的常用的五种数据类型详解

《Redis中的常用的五种数据类型详解》:本文主要介绍Redis中的常用的五种数据类型详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis常用的五种数据类型一、字符串(String)简介常用命令应用场景二、哈希(Hash)简介常用命令应用场景三、列表(L