Redis

2020-12-22  本文已影响0人  追梦小蜗牛
pexels-matteo-badini-4343131.jpg

Redis为啥快:

五种数据类型:

持久化:

主从复制:

是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点.
a)数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
b)故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
c)负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
d)高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。

哨兵:

哨兵的核心功能是主节点的自动故障转移。
a)监控(Monitoring):哨兵会不断地检查主节点和从节点是否运作正常.
b)自动故障转移(Automatic failover):当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其他从节点改为复制新的主节点.
c)配置提供者(Configuration provider):客户端在初始化时,通过连接哨兵来获得当前Redis服务的主节点地址.
d)通知(Notification):哨兵可以将故障转移的结果发送给客户端.
两部分组成:
a)哨兵节点: 哨兵系统由一个或多个哨兵节点组成,哨兵节点是特殊的redis节点,不存储数据.
b)数据节点: 主节点和从节点都是数据节点.
哨兵架构图:


哨兵架构图.png

集群:

即Redis Cluster,是一种分布式存储方案。集群由多个节点(Node)组成,Redis的数据分布在这些节点中。集群中的节点分为主节点和从节点:只有主节点负责读写请求和集群信息的维护;从节点只进行主节点数据和状态信息的复制.
作用:
a)数据分区:数据分区(或称数据分片)是集群最核心的功能: 集群将数据分散到多个节点,一方面突破了Redis单机内存大小的限制,存储容量大大增加;另一方面每个主节点都可以对外提供读服务和写服务,大大提高了集群的响应能力.
b)高可用:集群支持主从复制和主节点的自动故障转移(与哨兵类似);当任一节点发生故障时,集群仍然可以对外提供服务。
数据分区方案:
a)哈希取余分区: 计算key的hash值,然后对节点数量进行取余,从而决定数据映射到哪个节点上。该方案最大的问题是,当新增或删减节点时,节点数量发生变化,系统中所有的数据都需要重新计算映射关系,引发大规模数据迁移。
b)一致性哈希分区: 一致性哈希算法将整个哈希值空间组织成一个虚拟的圆环,如下图所示,范围为0-2^32-1;对于每个数据,根据key计算hash值,确定数据在环上的位置,然后从此位置沿环顺时针行走,找到的第一台服务器就是其应该映射到的服务器.一致性哈希分区的主要问题在于,当节点数量较少时,增加或删减节点,对单个节点的影响可能很大,造成数据的严重不平衡。还是以上图为例,如果去掉node2,node4中的数据由总数据的1/4左右变为1/2左右,与其他节点相比负载过高.
c)带虚拟节点的一致性哈希分区.

带虚拟节点的一致性哈希分区.png 集群.png

总结:

Redis真的是强大,还有一些牛逼的扩展,牛逼的人物是真的多...

上一篇下一篇

猜你喜欢

热点阅读