• 关于Redis的一些问题


    • Redis
      • 什么是Redis
        • Redis是一个完全开源的并遵守BSD协议的高性能键值数据库
      • Redis主要是做什么的?
        • 因为很多语言都支持Redis,也因为Redis交换数据很快,在服务器中经常用来存储一些需要频繁调取的数据,节省内存开销,也极大的提升了速度。将一些热点数据存储到Redis中,用的时候直接从内存取,也极大的提升了速度和节约了服务器的开销
          • 会话缓存
          • 消息队列
          • 排行榜和计数
          • 订阅发布消息
          • 列表
    • 开发人员应该如何配置和使用Redis(这个其实以前在我的blogs里写过啦)

     

      • Redis的部署模式(单点、主从、哨兵)
      • 单机模式
        • 【优】单机模式具有架构简单、部署方便、高性价比及高性能的优点;
        • 【劣】
          • 但其高性能受限于CPU的处理能力,且不保证数据的可靠性;
          • 同时该模式不适用于生产,如果发生宕机就会导致所有连接redis的服务发生缓存失效引起雪崩

     

      • 主从模式
        • 【优】
          • 主从模式采用主从部署结构,相较于但副本而言最大的特点就是主从间数据实时同步,并且提供数据持久化和备份策略。
          • 因为采用双机主备架构,所以当主库出现故障时自动进行主备切换,从库升级为主库;
          • 另一方面,开启数据持久化功能和配置合理的备份策略,能有效的解决数据误操作和数据异常丢失的问题
        • 【缺】
          • 故障恢复复杂,如果没有redis HA的话,故障时需要手动升级从节点;
          • 主库的读写能力受到单机的限制;
          • 主库的存储能力受到单机的限制

     

      • 哨兵模式
        • 哨兵模式是社区版本推出的原生高可用方案。其中部署架构主要redis sentinel集群和redis 数据集群构成
          • Redis sentinel集群是由若干sentinel节点组成的分布式集群,可以实现故障发现、故障自动转移、配置中心和客户端通知
          • Redis sentinel的节点数量要满足2n+1(n>=1)的奇数个
        • 【优】
          • Redis sentinel集群部署简单,能够解决redis主从模式下高可用切换问题;
          • 很方便实现redis数据节点的线性扩展从而突破单线程瓶颈,满足redis大容量或高性能业务要求
        • 【缺】
          • 相对于redis主从模式复杂,原理理解较繁琐;
          • 资源浪费,Redis 数据节点中 slave 节点作为备份节点不提供服务;
          • 不能解决读写分离问题,实现起来相对复杂

     

      • 集群模式
        • 集群模式是社区版推出的redis分布式集群解决方案,主要解决redis分布式方面的需求;如:当遇到单机内存,并发和流量等瓶颈的时候,Redis Cluster 能起到很好的负载均衡的目的
        • Redis cluster集群节点最小配置六个节点以上(3主3从),其中主节点主要提供读写操作,从节点主要作为备用节点,只供故障转移使用;redis cluster采用虚拟槽分区,所有的键根据哈希函数映射到0-16383的整数槽内,每个节点负责维护一部分槽和槽所映射的键值数据
        • 【优】
          • 集群模式没有中心架构,数据按照slot存储分布在多个节点,且节点间数据共享,可动态调整数据分布;
          • 扩展性表现在可线性的扩展到1000+节点,节点可以动态添加或删除;
          • 高可用性则体现在部分节点不可用的时,集群仍可用。通过增加 Slave 做 standby 数据副本,能够实现故障自动 failover,节点之间通过 gossip 协议交换状态信息,用投票机制完成 Slave 到 Master 的角色提升;
        • 【缺】
          • client实现复杂,客户端的不成熟影响业务的稳定性;
          • 数据通过异步复制不保证数据的强一致性;
          • 多个业务使用同一套集群时,无法根据统计区分冷热数据,资源隔离性较差,容易出现相互影响的情况;
          • Key 批量操作限制,只支持多 key 在同一节点上的事务操作;
          • Key 事务操作支持有限,只支持多 key 在同一节点上的事务操作;
          • Key 作为数据分区的最小粒度,不能将一个很大的键值对象如 hash、list 等映射到不同的节点
          • 不支持多数据库空间,单机下的 redis 可以支持到 16 个数据库,集群模式下只能使用 1 个数据库空间

     

      • Redis运维(启动、停止、扩容、缩容、备份)
      • 高可用方案
        • 主从模式
          • 主服务器返回+fullresync <runid> <offset>回复,表示主服务器要求与从服务器进行完整的数据全量同步操作。其中,runid是当前主服务器运行id,而offset是当前主服务器的复制偏移量。
          • 如果主服务器应答+continue,那么表示主服务器与从服务器进行部分数据同步操作,将从服务器缺失的数据同步过来即可。
          • 如果主服务器应答-err,那么表示主服务器版本低于2.8,识别不了psync命令,此时从服务器将向主服务器发送sync命令,执行完整的全量数据同步

     

        • 哨兵模式
          • redis使用一组哨兵(sentinel)节点来监控主从redis服务的可用性。
          • 一旦发现redis主节点失效,将选举出一个哨兵节点作为领导者(leader)。
          • 哨兵领导者再从剩余的从redis节点中选出一个redis节点作为新的主redis节点对外服务
          • 哨兵领导者向剩余的从节点发送命令,让它们成为新主节点的从节点。
          • 哨兵节点集合会将原来的主节点更新为从节点,当其恢复之后命令它去复制新的主节点的数据

     

  • 相关阅读:
    linux驱动摸索 --驱动框架初始化(结合韦东山视频教程)
    LWIP的移植笔记
    linux命令大全
    Linux中断(interrupt)子系统之一:中断系统基本原理
    Linux内核中的jiffies及其作用介绍及jiffies等相关函数详解
    Linux下PCI设备驱动程序开发 --- PCI驱动程序实现(三)
    VC++定义全局变量及extern用法
    [转]VS 2012环境下使用MFC进行OpenGL编程
    [转]在C++中容易出现的#error No Target Architecture
    实例详解:MFC坐标轴实现
  • 原文地址:https://www.cnblogs.com/baobaotql/p/14827775.html
Copyright © 2020-2023  润新知