SpringBoot连接Redis的三种模式(主从复制、哨兵模式和集群模式)

46 篇文章 1 订阅

SpringBoot连接Redis的三种模式(主从复制、哨兵模式和集群模式)

SpringBoot连接Redis

pom.xml文件添加redis依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>2.2.6.RELEASE</version>
        </dependency>

application.properties文件配置redis

spring.redis.host=hostip
spring.redis.port=6379
spring.redis.password=redisRoot

主从模式
原理
主从的原理还算是比较简单的,一主多从,「主数据库(master)可以读也可以写(read/write),从数据库仅读(only read)」。

但是,主从模式一般实现「读写分离」,「主数据库仅写(only write)」,减轻主数据库的压力,主从模式的原理:
在这里插入图片描述
工作机制
在这里插入图片描述

哨兵模式
原理
哨兵模式是主从的升级版,因为主从的出现故障后,不会自动恢复,需要人为干预。

在主从的基础上,实现哨兵模式就是为了监控主从的运行状况,对主从的健壮进行监控,就好像哨兵一样,只要有异常就发出警告,对异常状况进行处理。
在这里插入图片描述
集群模式

哨兵解决和主从不能自动故障恢复的问题,但是同时也存在难以扩容以及单机存储、读写能力受限的问题,并且集群之前都是一台redis都是全量的数据,这样所有的redis都冗余一份,就会大大消耗内存空间。

集群模式实现了Redis数据的分布式存储,实现数据的分片,每个redis节点存储不同的内容,并且解决了在线的节点收缩(下线)和扩容(上线)问题。

集群模式真正意义上实现了系统的高可用和高性能,但是集群同时进一步使系统变得越来越复杂,接下来我们来详细的了解集群的运作原理。

数据分区原理
集群的原理图还是很好理解的,在Redis集群中采用的是虚拟槽分区算法,会把redis集群分成16384 个槽(0 -16383)。

比如:下图所示三个master,会把0 -16383范围的槽可能分成三部分(0-5000)、(5001-11000)、(11001-16383)分别数据三个缓存节点的槽范围。
在这里插入图片描述
当客户端请求过来,会首先通过对key进行CRC16 校验并对 16384 取模(CRC16(key)%16383)计算出key所在的槽,然后再到对应的槽上进行取数据或者存数据,这样就实现了数据的访问更新。
在这里插入图片描述
参考文章:
Redis主从复制、哨兵、Cluster三种模式

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值