redis作为集中式的数据库中间件,它具有持久化的能力,但是需要容许少量数据的丢失。

单机版

生成环境不建议使用,有单点故障风险。一旦单台结点出现故障,可能会导致整个服务不可用

sentinal哨兵模式

另外引入一台结点redis sentinal(哨兵),会与其他的redis结点保持长连接(心跳机制),它实时地感应到其他redis结点的状态,客户端进行访问时,会向redis sentinal询问可用的redis服务结点,redis sentinal会返回可用的redis结点的信息。客户端获取到信息后再去访问对应的redis结点,并且会将连接信息保存到本地。

当可用的redis结点信息发生变化的时候,redis sentinal会调整对应的结点关系(主从关系),然后向客户端发送一个change通知,告诉它redis结点发生变化,客户端就会重新想redis sentinal发送请求获取新的结点信息。


当redis结点中有多个主从复制,客户端如何知道何时将请求发给哪个master呢?
客户端本地维护了一个分片机制,它通过redis sentinal明确地知道有两个master结点,通过对master机器的IP值进行hash,将数据按照不同的策略路由到不同的master结点。
它有一些缺点:

  • 它需要在客户端做比较复杂的分片逻辑。增加了客户端与redis结点之间的耦合
  • 随着业务的发展,我们以前定义的redis结点不够用的需要新增redis结点的时候,会设计到数据迁移的过程,这个过程是比较繁琐的。

集群cluster模式

多个redis结点,redis会自动竞选出master和slave结点,并且集群中的每个redis都和其他多台redis有网状结构,redis能清晰地直到我的主/从是谁,我们其他分片的主从信息,也就是每个redis结点中都有维护整个集群结构的信息,这都是基于redis-cluster的数据同步和paxos的竞争算法来实现的。

当客户端访问其中的一个结点时,就能获取整个集群结点的信息,并保存到本地。若有结点宕机,集群会自动进行调整更新信息,然后每个结点维护一份新的信息,此时客户端按照旧的集群信息访问到一个不属于新的集群管理范围的key的时候,redis会发送一个reask请求,通知客户端获取新的集群信息


当redis4宕机后,redis会发送一个reask请求,通知客户端获取新的集群信息

集中模式对比

  • 生产环境中不要使用单机版
  • 哨兵模式是由客户端本地来维护redis结点之间的信息,而集群模式是由结点来维护所有结点之间的连接关系
  • sentinal哨兵模式存在缺陷,在水平拓展redis结点的情况下,需要客户端在本地维护分片机制(客户端与redis结点之间存在耦合),并且如果此时需要再继续进行拓展,那么就会有一个数据迁移的过程,这个过程是繁琐的。
  • 而集群模式却不需要客户端来进行分片机制的维护,并且每个客户端中都维护了整个集群网络的信息,进行客户端与redis集群之间的解耦,并且更加易于拓展。

redis的单机、哨兵、集群模式对比相关推荐

  1. SpringBoot整合Redis(单机/哨兵/集群)

    pom <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http:// ...

  2. 详谈redis哨兵集群模式配置

    说到针对大量实时性的数据库存储服务,一般使用redis数据库.redis是一款以key-value形式存储数据的轻量级缓存数据库,在考虑到对数据进行存储的同时,还要考虑到服务器因为异常情况而终止的情况 ...

  3. 第一节 Redis 使用及哨兵集群 2022-1-2

    Java组件总目录 Redis 使用及哨兵集群 Java组件总目录 一 Redis基本数据类型使用场景 1 String 2 List 存储列表结构 3 Hash 4 Set 5 Zset 二级目录 ...

  4. C#两大知名Redis客户端连接哨兵集群的姿势

    前言 前面<Docker-Compose搭建Redis高可用哨兵集群>, 我的思路是将Redis.Sentinel.Redis Client App链接到同一个网桥网络,这个网桥内的Red ...

  5. Kafka单机、集群模式安装详解(二)

    本文环境如下: 操作系统:CentOS 6 32位 JDK版本:1.8.0_77 32位 Kafka版本:0.9.0.1(Scala 2.11) 接上篇 Kafka单机.集群模式安装详解(一) 6. ...

  6. redis的三种集群模式原理

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

  7. Redis分片主从哨兵集群,原理详解,集群的配置安装,8大数据类型,springboot整合使用

    文章目录 Redis介绍 Redis分片 Redis主从 Redis哨兵 Redis集群 Redis持久化策略 RDB AOF 持久化方案选择 Redis内存策略 LRU算法 LFU算法 Random ...

  8. redis学习-主从-哨兵集群-redis-cluster简单日记

    1.linux下redis安装及部署 redis安装包与ruby安装包下载 (转)Linux下Redis的安装与部署 2.常用命令及简单配置注解 redis-server redis.conf: 启动 ...

  9. Kafka单机、集群模式安装详解(一)

    本文环境如下: 操作系统:CentOS 6 32位 JDK版本:1.8.0_77 32位 Kafka版本:0.9.0.1(Scala 2.11) 1. 所需要的环境 Kafka需要以下运行环境: Ja ...

最新文章

  1. 一: 建立Vue sampleproject
  2. ER图,数据建模与数据字典
  3. Struts2、SpringMVC、Servlet(Jsp)性能对比 测试 。 Servlet的性能应该是最好的,可以做为参考基准,其它测试都要向它看齐,参照...
  4. JS你可能还不知道的一些知识点(一)
  5. Oracle大型数据库在AIX UNIX上的实战详解
  6. HDU 5933 2016CCPC杭州 A: ArcSoft's Office Rearrangement
  7. paip.百度空间 JAVA程序发文总结
  8. mcgscom口针脚定义_各种接口针脚定义
  9. SpringBoot项目多环境配置(亲测有效)
  10. RGB图像点落入色度图上的算法
  11. 扩展卡尔曼滤波算法——基本原理及举例(python实现radar数据滤波)
  12. Shell脚本字符串大小写转换
  13. Mono.Cecil DefaultAssemblyResolver.Dispose
  14. 最新的鄞比 服务器mp4,阳光之下播出,彭冠英好适合傅慎行,和李承鄞比肩的人出来了...
  15. C51实现时钟12MHz,使用定时器T1的方式1定时20mS ,做一个时分秒的电子钟。
  16. 使用Mailgun WordPress插件增加订户
  17. 百分点大数据技术团队:Cesium技术在智慧应急行业的应用
  18. MaaS一体化绿色出行服务,实现城市交通出行碳中和
  19. 运行django项目报错Couldn‘t import Django
  20. MySQL之InnoDB主键索引的B+树的高度计算

热门文章

  1. Linux:XXX 不在 sudoers 文件中。此事将被报告。
  2. 《破茧成蝶——用户体验设计师的成长之路》一导读
  3. [09]ESP32+陀螺仪加速度计MPU6050移植与调试
  4. 计算机导论——HTML基础
  5. 2021年茶艺师(初级)考试及茶艺师(初级)模拟考试
  6. 大学英语作文计算机网络,网络对大学生的影响The Influence of the Internet on College Students...
  7. windows xp系统下Android模拟器安装apk与卸载apk
  8. BaseDao工具类
  9. 【笔记】DDD领域驱动设计精粹——浅谈DDD
  10. console for sinatra