一、主从模式

通过持久化功能,Redis保证了即使在服务器重启的情况下也不会损失(或少量损失)数据,因为持久化会把内存中数据保存到硬盘上,重启会从硬盘上加载数据。

但是由于数据是存储在一台服务器上的,如果这台服务器出现硬盘故障等问题,也会导致数据丢失。为了避免单点故障,通常的做法是将数据库复制多个副本以部署在不同的服务器上,这样即使有一台服务器出现故障,其他服务器依然可以继续提供服务。为此, Redis 提供了复制(replication)功能,可以实现当一台数据库中的数据更新后,自动将更新的数据同步到其他数据库上。

在复制的概念中,数据库分为两类,一类是主数据库(master),另一类是从数据库(slave)。主数据库可以进行读写操作,当写操作导致数据变化时会自动将数据同步给从数据库。而从数据库一般是只读的,并接受主数据库同步过来的数据。一个主数据库可以拥有多个从数据库,而一个从数据库只能拥有一个主数据库。

主从数据库的配置

主数据库不用配置,从redis的conf文件中可以加载从数据库的信息,也可以在启动时,使用 redis-server --port 6380 --slaveof 127.0.0.1 6379

从数据库一般是只读,可以改为可写,但写入的数据很容易被主同步没,所以还是只读就可以。

也可以在运行时使用slaveof ip port命令,停止原来的主,切换成刚刚设置的主 slaveof no one会把自己变成主

复制原理

当从数据库启动时,会向主数据库发送sync命令,主数据库接收到sync后开始在后台保存快照rdb,在保存快照期间收到的命令缓存起来,当快照完成时,主数据库会将快照和缓存的命令一块发送给从**。复制初始化结束。

之后,主每收到1个命令就同步发送给从。

当出现断开重连后,2.8之后的版本会将断线期间的命令传给重数据库。增量复制

主从复制是乐观复制,当客户端发送写执行给主,主执行完立即将结果返回客户端,并异步的把命令发送给从,从而不影响性能。也可以设置至少同步给多少个从主才可写。

无硬盘复制:如果硬盘效率低将会影响复制性能,2.8之后可以设置无硬盘复制,repl-diskless-sync yes

二、哨兵

当主数据库遇到异常中断服务后,开发者可以通过手动的方式选择一个从数据库来升格为主数据库,以使得系统能够继续提供服务。然而整个过程相对麻烦且需要人工介入,难以实现自动化。 为此,Redis 2.8中提供了哨兵工具来实现自动化的系统监控和故障恢复功能。

哨兵的作用就是监控redis主、从数据库是否正常运行,主出现故障自动将从数据库转换为主数据库。

例子:

1主2从1哨兵

注:

配置哨兵监控一个系统时,只需要配置其监控主数据库即可,哨兵会自动发现所有复制该主数据库的从数据库

这样哨兵就能监控主6379和从6380、6381,一旦6379挂掉,哨兵就会在2个从中选择一个作为主,根据优先级选,如果一样就选个id小的,当6379再起来就作为从存在。

三、集群(cluster-enable)

使用集群,只需要将每个数据库节点的cluster-enable配置打开即可。每个集群中至少需要三个主数据库才能正常运行。

即使使用哨兵,redis每个实例也是全量存储,每个redis存储的内容都是完整的数据,浪费内存且有木桶效应。为了最大化利用内存,可以采用集群,就是分布式存储。即每台redis存储不同的内容。

集群至少需要3主3从,且每个实例使用不同的配置文件,主从不用配置,集群会自己选。

修改每个实例的配置文件:

集群的运行

这里的master选举和zookeeper的相似

redis存opc_Redis集群的三种模式相关推荐

  1. redis集群的三种模式

    通过持久化功能,Redis保证了即使在服务器重启的情况下也不会丢失(或少量丢失)数据,因为持久化会把内存中数据保存到硬盘上,重启会从硬盘上加载数据.但是由于数据是存储在一台服务器上的,如果这台服务器出 ...

  2. redis 高可用(持久化、主从复制、哨兵、集群)以及集群的三种模式

    Redis高可用定义 在web服务器中,高可用代表服务器可以正常访问的时间,一般使用百分比来衡量多长时间内可以提供正常服务 但是在redis中,高可用的定义还要更广泛一点,除了提供正常的服务(如主从分 ...

  3. 如何在IDEA上编写Spark程序?(本地+集群+java三种模式书写代码)

    本篇博客,Alice为大家带来关于如何在IDEA上编写Spark程序的教程. 文章目录 写在前面 准备材料 图解WordCount pom.xml 本地执行 集群上运行 Java8版[了解] 写在前面 ...

  4. redis集群的几种模式

    redis集群的几种模式 主从模式 哨兵模式 Cluster集群模式(推荐) 三种模式都有搭建成功,相比之下,个人还是推荐Cluster集群 主从模式 主从模式(Master-Slave Replic ...

  5. Linux从头开始搭建Redis集群(三种方式)

    Linux搭建Redis集群 前言 一.下载Redis安装程序包 1.打开虚拟机终端,输入以下命令,下载对应的 Redis 文件 2.下载好之后,进行解压 3.将解压好的文件移动/复制到 /usr/l ...

  6. Redis集群的三种配置方式案例

    前言 Redis有三种集群模式: 主从复制 哨兵(Sentinel) 集群(Cluster)

  7. Hadoop 集群的三种方式

    1,Local(Standalone) Mode 单机模式 $ mkdir input$ cp etc/hadoop/*.xml input$ bin/hadoop jar share/hadoop/ ...

  8. 一文把Redis主从复制、哨兵、Cluster三种模式摸透

    概述 Redis作为缓存的高效中间件,在我们日常的开发中被频繁的使用,今天就来说一说Redis的四种模式,分别是「单机版.主从复制.哨兵.以及集群模式」. 可能,在一般公司的程序员使用单机版基本都能解 ...

  9. 摸透 Redis 主从复制、哨兵、Cluster 三种模式

    概述 Redis作为缓存的高效中间件,在我们日常的开发中被频繁的使用,今天就来说一说Redis的四种模式,分别是「单机版.主从复制.哨兵.以及集群模式」. 可能,在一般公司的程序员使用单机版基本都能解 ...

最新文章

  1. 中国制造2025+互联网+,引领制造业发展
  2. mysql数据库从删库到跑路之mysql完整性约束
  3. 计算硼原子的基态能级B---库仑排斥能
  4. 特殊时期,对数据中心运营有哪些影响?
  5. (chap3 数据链路) 介质型网络
  6. 【linux】查看字体
  7. 2导出指定表结构_大白话详解大数据hive知识点,老刘真的很用心(2)
  8. 使用python+ffmpeg批量转换格式
  9. cygwin配置git
  10. mysql orderby count_mysql中count(),groupby,orderby使用方法分享
  11. java后台用 requset对象 存储值 前台获取不到_springmvc form表单提交后台对象获取不到值(解决)...
  12. python - Flask 基础(1)
  13. AspNetForum 论坛整改:添加显IP功能及IP所属地
  14. 467.环绕字符串中唯一的子字符串
  15. VBS脚本常用经典代码
  16. Thinkphp响应式第三四方聚合支付平台源码
  17. gluster部署和使用
  18. springboot中实体类接收post请求、反序列化
  19. <数据库> if 条件语句的使用 SQL26 计算25岁以上和以下的用户数量
  20. python实战演练_《Python高效开发实战》实战演练——基本视图3

热门文章

  1. 转:数据库关系模式的范式详解
  2. java filefilter的用法_Java File.listFiles(FileFilter filter)方法
  3. mysql内置的变量,MySQL服务器模式及相关内置变量
  4. STM32串口的使用(原理、结构体、库函数、串口发送字符(串)、重定向printf串口发送、串口中断接收控制灯)
  5. python谁是卧底游戏流程图_虎牙小程序—谁是卧底 |明星互动游戏
  6. 24c语言程序设计是啥,《C语言程序设计》作业答案.docx
  7. java redirect 跨域_如何解决跨域重定向携带参数的问题?不使用将参数拼接在重定向url末尾的方式...
  8. python中感叹号_C#中感叹号(!) 的作用总结
  9. java+random+oracle,oracle随机数 — dbms_random
  10. 程序员需要了解的十个高级SQL概念