23,redis如何实现主从复制

redis主从复制

和Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。下图为级联结构。

Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。具体步骤如下:

-从服务器连接主服务器,发送SYNC命令;

-主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;

-主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;

-从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;

-主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;

-从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;

完成上面几个步骤后就完成了从服务器数据初始化的所有操作,从服务器此时可以接收来自用户的读请求。

Redis增量复制是指Slave初始化后开始正常工作时主服务器发生的写操作同步到从服务器的过程。

增量复制的过程主要是主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令。

Redis主从同步策略

主从刚刚连接的时候,进行全量同步;全同步结束后,进行增量同步。当然,如果有需要,slave在任何时候都可以发起全量同步。redis策略是,无论如何,首先会尝试进行增量同步,如不成功,要求从机进行全量同步。

本回答由网友推荐

redis 集群中为什么不用配置主从

答:1、内存中对象说的是对象类型的数据还是就单纯的是存入的数据?一般String使用setex()命令进行插入有时效的value;2、作为NOSQL的代表,redis性能还是很不错的,一般不用管道的话,读写同时处理10000次/秒不在话下,用上管道经过本人测试20万条...

如何从主从服务器配置升级到集群

mysql集群很复杂,当然小集群比较简单,集群主要是实现高可用和高负载,主从只是集群可能用到的一个mysql功能了。

redisserverwentaway?redisserverw

挺有难度的一个问题,不好好想想还真难想出来

目前项目对Redis依赖较重,使用phpredis扩展操作Redis, 但频繁出现Redis server went away错误。

常见的网络连接错误原因:

Network is unreachable

到目标ip无可用路由 非常罕见(断网,或没有网关时)

connection timedout

tcp建立连接超时(目标主机不可达到,或产生丢包)

iptables在高并发连接时丢包,可能导致连接超时 ip_conntrack: table full, dropping packet

connection refused

连接被拒绝,目标主机存活,端口未开放

Couldn't resolve host

域名解析失败

但是phpredis的server went away非常让人困惑,为了弄清楚phpredis产生server went away的原因,有必要深入分析,从而才有助于解决这个问题。

redis主从配置切换了怎么办

从机的redis命令行输入slaveofnoone转换为主机,然后要么修改主机ip要么修改java程序中的主机ip地址。

另外建议看下redis sentinel 主从切换(failover)解决方案因为主库没有配置持久化,所以主库的data目录只有从库连接主库请求resync的时候做快照留下来的dump.rdb文件。

如果重启主库,主库会按照data目录下的dump.rdb来恢复数据。

因此,如果从库是从最开始就配置好了的而且没有发生过再次请求resync,那么此时的dump.rdb将是空的。主库按照空的dump.rdb恢复数据,自然数据全无,从库发现主库能够连接上时会自动请求resync,从库也将拷贝一份空白的数据。

redis 如何判断是集群还是主从

redis主从复制

redis主从配置比较简单,基本就是在从节点配置文件加上:slaveof 192.168.33.130 6379

主要是通过master server持久化的rdb文件实现的。master server 先dump出内存快照文件,然后将rdb文件传给slave server,slave server 根据rdb文件重建内存表。

redis复制过程如下:

1、slave server启动连接到master server之后,salve server主动发送SYNC命令给master server

2、master server接受SYNC命令之后,判断,是否有正在进行内存快照的子进程,如果有,则等待其结束,否则,fork一个子进程,子进程把内存数据保存为文件,并发送给slave server

3、master server子进程进程做数据快照时,父进程可以继续接收client端请求写数据,此时,父进程把新写入的数据放到待发送缓存队列中

4、slave server 接收内存快照文件之后,清空内存数据,根据接收的快照文件,重建内存表数据结构

5、master server把快照文件发送完毕之后,发送缓存队列中保存的子进程快照期间改变的数据给slave server,slave server做相同处理,保存数据一致性

6、master server 后续接收的数据,都会通过步骤1建立的连接,把数据发送到slave server

需要注意:slave server如果因为网络或其他原因断与master server的连接,当slave server重新连接时,需要重新获取master server的内存快照文件,slave server的数据会自动全部清空,然后再重新建立内存表,这样会让slave server 启动恢复服务比较慢,同时也给master server多个master也只有一个主,一个或者多个备,一般都是在主上面进行增删,从一般都是通过复制log进行同步。这也是所有的主从复制式集群的原理,例如redis,mysql都是如此。

redis主从配置完毕为啥在主服务器中检测不到从服务器相关推荐

  1. Redis主从配置(一主两从)

    Redis主从配置(一主两从) 1.进入redis目录,打开redis的配置文件redis.conf. 2.修改redis配置文件: Vi redis.conf 在两台从服务器的尾部 添加 slave ...

  2. redis主从配置和redis哨兵配置

    主从配置 redis 主从配置master slave 优点: 防止单点故障(除了单机版,都可以) 读写分离,更好的实现多读写少 克隆两台redis虚拟机作为从机 复制操作文件 cp /usr/red ...

  3. Redis主从配置及通过Keepalived实现Redis自动切换高可用

    Redis主从配置及通过Keepalived实现Redis自动切换高可用 [日期:2014-07-23] 来源:Linux社区  作者:fuquanjun [字体:大 中 小] 一:环境介绍: Mas ...

  4. php redis 主从配置,Redis主从及其PHP扩展安装配置

    1.Redis简介Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有序 ...

  5. Redis主从配置和集群配置

    Redis主从配置和集群配置 文章目录 Redis主从配置和集群配置 一.Redis主从配置 1.主从概念 2.主从配置 3.数据操作 二.Redis集群配置 1.简介 2.Redis 集群好处 3. ...

  6. Redis 主从配置密码以及哨兵

    目录: Redis 主从介绍 哨兵机制 Redis 主从配置 环境 安装 启动服务 检查主从状态 测试数据同步 默认是读写分离的 Redis Sentinel 配置 主Redis宕机测试 配置多个哨兵 ...

  7. Linux学习——redis主从配置(带密码)

    redis一主二从配置(带密码) 找了很多redis主从配置教程发现大多数都是没密码的配置,而正式服务器中,为了安全redis通常都会设置密码,正好学到这,下面分享我自己学习中对于redis主从配置的 ...

  8. redis主从配置之持久化配置

    环境描述: centos:7.6docker:19.03.1redis:6.0.9 对于centos怎么装docker,docker又怎么装redis镜像等等内容就不做概述了.如果还不会这个,就先去百 ...

  9. Docker的redis主从配置实践

    Docker下redis的主从配置_lzy_yuan的博客-CSDN博客_docker redis 主从配置 前言 本节主要实践redis集群分类重点如下两个 主从复制 Replication 高可用 ...

最新文章

  1. php ip地址地区,PHP查询ip所在地(省份,市)
  2. android ORM 框架 search
  3. Win10自动息屏太快解决方法
  4. Linux基础命令---more
  5. 重构:改善饿了么交易系统的设计思路
  6. 单工 半双工 全双工
  7. 计算机二级考试题停车收费,计算机二级考试真题-Excel-停车场调整收费标准
  8. 使用Instant Client配置PL/SQL Developer
  9. LeetCode 1021. 删除最外层的括号(栈)
  10. th标签能包裹select吗_电影《八佰》过后,他能摘掉马思纯前男友标签了吗?
  11. 导航栏-滚动渐变 - 封装版
  12. python爬虫:爬取某网站视频
  13. java 如何取01 zz_java中synchronized用法(zz)
  14. matlab imagesc clims,imagesc
  15. python实现一款编译型语言_Java,Python谁是编译型语言,谁是解释型语
  16. 中国著名的D版和破解软件下载网站(转)
  17. pythonmt4通讯swot矩阵_swot分析矩阵范例(各部门)
  18. 最新版《神经网络和深度学习》中文版.pdf
  19. 方程自己解(1)——物理信息神经网络(PINN)
  20. 列表、元组、字典、集合的基本使用和相关函数,基础的文件操作

热门文章

  1. Git(仓库,分支,生成SSH公钥,IDEA集成Git)
  2. Element UI 上传一张图片后隐藏上传按钮
  3. 用python画小猪票佩琪
  4. 还没穿学士服,还没吃散伙饭,就这样毕业了
  5. Linux下的编程实战【转】
  6. 【Python黑科技】tkinter库实战“连连看”小游戏(保姆级图文+实现代码)
  7. UINavigationController使用详解
  8. 在windows server 2012上搭建DNS服务器
  9. Qt/C++编写自定义控件10-云台仪表盘
  10. 项目运营必备☞推荐的甘特图软件