Redis集群(主从复制)
主从复制
主从复制原理
Redis集群中有很多Redis服务器,这些Reids服务器分为主服务器和从服务器。
- 从服务器会向主服务器发送命令:SYNC命令。
- 主服务器接收到SYNC命令后,开始执行GBSAVE命令生成RDB文件(快照文件)并使用缓冲区来记录此后的写命令
- 主服务器GBSAVE命令执行完毕后,会将次快照发送给所有的从服务器。而且在发送期间会继续记录写命令。
- 从服务器接收到主服务器发送过来快照文件,会加载这个快照文件,并执行。
- 主服务在发送完快照文件后会向从服务器发送缓冲区命令。
- 从服务器完成对快照文件的载入,也会开始接收主服务器的命令,并执行。
- 从服务器和主服务器执行相同的命令
通过这种方式完成主从复制。
优点:
保证主服务器和从服务器数据同步,实现读写分离,主服务器用来执行写命令,而从服务器用来提供数据(读)。
缺点:
Redis不具备自动容错和恢复功能,主从机器的宕机都会导致前段部分读写请求失败,导致数据部分丢失。
- 哨兵模式
当主服务器宕机了,哨兵模式可以让一个从服务器升级为主服务器,以便保证继续提供服务。
优点:
提高Redis的高可用,让系统更健壮,可用性更高。
缺点:
Redis很难支持在线扩容。如果集群容量达到上线,这时扩容就会变得很复杂。
Redis-Cluster集群
主从复制有一个很大的缺陷:主服务器和从服务器存储的数据一样,这是一种浪费。
redis3.0后提供Redis-Cluster集群,这是一种分布式存储的集群方式:每一个Reids服务器上存储不同的数据,提高高可用。
Redis在去保存数据时,会通过一个算法计算key的结果,通过这个结果和插槽(16834)(Hash槽:0-16383)做运算,将运算结果作为这个数据
的存储位置,这样就可以将数据保存到不同的服务器上,保证分布式存储。
Redis集群(主从复制)的更多相关文章
- Redis集群主从复制(一主两从)搭建配置教程【Windows环境】
如何学会在合适的场景使用合适的技术方案,这值得思考. 由于本地环境的使用,所以搭建一个本地的Redis集群,本篇讲解Redis主从复制集群的搭建,使用的平台是Windows,搭建的思路和Linux上基 ...
- Docker部署Redis集群(主从复制 高可用)
环境 vmware12+centos7 关于环境安装可以参考我的另一篇博客 https://www.cnblogs.com/pengboke/p/13063168.html 1.清理环境 我这里用的虚 ...
- redis高可用、redis集群、redis缓存优化
今日内容概要 redis高可用 redis集群 redis缓存优化 内容详细 1.redis高可用 # 主从复制存在的问题: 1 主从复制,主节点发生故障,需要做故障转移,可以手动转移:让其中一个sl ...
- 【Redis学习之八】Redis集群:主从复制
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 redis-2.8.18 Redis集群分类: 主从复制 R ...
- Redis 集群_主从复制_哨兵模型
1 redis集群简介 1.1 集群的概念 所谓的集群,就是通过添加服务器的数量,提供相同的服务,从而让服务器达到一个稳定.高效的状态. 1.1.1 使用redis集群的必要性 问题:我们已经部署好了 ...
- redis集群之主从复制集群的原理和部署
最近在复盘redis的知识,所以本文开始希望介绍下redis的集群架构.原理以及部署:本文主要介绍redis的主从复制集群,包括其架构模型,原理,高可用等: 一.主从集群的介绍 redis的主从复 ...
- Redis集群的安装测试(伪分布模式 - 主从复制)
想跑一下Redis集群,但是没有那么多服务器,所以使用伪分布式模式,模拟一下,记录一下安装过程. 软件: redis-3.0.3.tar.gz 集群正常工作至少需要3个主节点(本示例创建6个节点,3主 ...
- Redis 集群的合纵与连横
之前一篇写了关于 Redis 的性能,这篇就写写我认为比性能更重要的扩展性方面的主题. 如果再给我一次回到好几年前的机会,对于使用 Redis 我一开始就要好好考虑将来的扩展问题.就像我们做数据库分库 ...
- 就publish/subscribe功能看redis集群模式下的队列技术(一)
Redis 简介 Redis 是完全开源免费的,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中 ...
- Redis 集群方案
根据一些测试整理出来的一份方案(转自http://www.cnblogs.com/lulu/): 1. Redis 性能 对于redis 的一些简单测试,仅供参考: 测试环境:Redhat6.2 , ...
随机推荐
- Kubernetes--Pod节点选择器nodeSelector(标签)
Pod节点选择器是标签及标签选择器的一种应用,它能够让Pod对象基于集群中工作节点的标签来挑选倾向运行的目标节点. Kubernetes的kube-scheduler守护进程负责在各工作节点中基于系统 ...
- 对PTA题目集1~3的总结
一.作业总结 这几次的PTA作业主要考察我们对Java语言中的字符串的输入和输出.转换.有关它们的方法的运用和相关的一些运算,还有我们对题目需求的了解和书写代码的规范:其次还有强化我们对"类 ...
- 小家大变局.PDF
书本详情 小家大变局种类:Self-Help, Relationships & Lifestyle - Families & Parents年:2022出版社:中信出版集团语言:chi ...
- 常见Linux命令二
常见Linux命令二 一:shutdown命令--用来系统关机命令. 语法:shutdown(选择)(参数) 常见选项:-r:shutdown之后重启 -h:将系统关机 二:reboot命令-- 重新 ...
- 人为提升服务器CPU、内存、硬盘使用率
一.CPU使用率 vikyd/go-cpu-load: Generate CPU load on Windows/Linux/Mac (github.com) 所有CPU核心负载30%运行10秒钟 . ...
- 无锁并发,CAS等
Unsafe
- python之目录结构01
本文档主要是自己学习巩固以及复习之用,主要写些自己的学习体会! 以下为一个简要的目录构: Foo/ |-- bin/ | |-- foo | |-- foo/ | |-- tests/ | | |-- ...
- [笔记]gdb调试中一个string变量太长,如何将该string变量完全输出在屏幕上?
来自 https://stackoverflow.com/questions/233328/how-do-i-print-the-full-value-of-a-long-string-in-gdb ...
- List集合增删元素时,UnsupportedOperationException报错问题
我的情况是这样:从数组转集合,操作集合删除元素. // Tab页面标题第一步:String[] mTitles = getResources().getStringArray(R.array.lead ...
- 关于给widget添加属性
在django中,我们通过修改Form/ModelForm的初始化函数__init__修改表单的显示样式,其中修改widget的属性操作和字典操作一致. 1.给widget添加属性 说明:这是在不影响 ...