目录
核心知识点
Redis主从架构
特点:薪火相传(从节点下还可以有从节点),一主多从
原理:在slave第一次生成时,会做全局同步,向master发送basave指令,将master中的全部数据复制下来,使用到rdb文件进行数据的传递,此操作是异步的,但是slave拿到数据后加载数据是需要使用到slave的线程
此后的master数据发生改变是,redis向mater写一条数据,也会同时向slave写入相同的数据,这种叫做增量同步
优势:读写分离,Master负责读写,Slave只负责读,数据同步的过程是异步的,不影响数据库的性能,对于查询次数较多的数据,可承受瞬间高并发的请求
劣势:主数据库宕机就不能写数据了,只能读数据
Redis哨兵机制
特点:反客为主
简介:哨兵模式是在主从结构下,为了实现数据库的高可用,而采用的一种机制,由一个或多个sentinel实例组成的sennrinel系统监控多个主服务器,以及这些主服务器下的从服务器,并在被监视的主服务器宕机是,随机选取该主服务器下的从服务器作为主服务器,继续执行redis发送的读写请求
工作原理:
sentinel会每秒向主服务器发送ping请求,当一段时间内没有收到回复时,默认30s,这个时间我们也可以自己定义,会将主服务器标记为主观下线
此时所有的sentinel都会每秒向此服务器发送ping,当足够数量的sentinel(大于或等于配置文件中配置的数量)都将此服务器标记为主观下线,此时此服务器就会由主观下线进入客观下线状态
一般情况下,sentinel每10秒向master和slave发送一次info,当主服务器被标记为客观下线状态,就会每秒向master和slave发送info
如果没有足够多的sentinel同意master下线,master的客观下线就会被移除
如果master重新向sentinel的ping指令发送有效回复,master的主观下线状态就会被移除
哨兵模式的优势:实现了主从架构的高可用
缺点:只有一个主服务器负责读写,大量的请求瞬间并发,一个master服务器是不能撑得起这样的并发,会导致内存不足
Redis集群高可用
一般情况下,Redis集群至少设置6个节点,由3个master和3个slave组成
Redis集群模式实现了Redis的高可用,横向扩容,也就是可以配置n个主节点,每个节点储存总数据的1/n,即使其中的一个master不可用,也不会影响redis的读写服务
Redis会采用槽位机制将数据进行计算后放在合适的位置,如果该位置有数据,会采用链表方式将数据追加到后面
Jedis应用集群的API
JedisCluster
SpringBoot如何配置集群
yml文件
Spring:
redis:
node:
SpringBoot如何应用lettuce连接池
添加common-pool2依赖,在配置文件进行配置