8、Redis

具体参考:

Redis知识点&面试题总结 | JavaGuide

面试到一问是redis的应用:缓存、消息队列、分布式锁、限流。

redis 的保存策略:RDB、AOF(持久化)

RDB:保存的是数据;占用存储空间小,存储速度慢,恢复快,数据有可能会丢失,用bgsave指令保存 AOF:保存的是指令;占用存储空间大,存储速度快,恢复慢,安全性高 选择和应用场景:如果对数据敏感(安全性考虑),建议采用AOF策略,同时AOF的性能也比较高

主从复制的工作流程

  • 第一阶段:建立连接阶段。slave主动连接master,通过配置文件形式。

  • 第二阶段:数据同步阶段。分为部分复制和全量复制。

  • 第三阶段:命令传播阶段。为数据同步阶段服务。

slave发送同步指令给master(runid和offset为空),master接受到指令后执行bgsave生成RDB文件,纪录当前偏移量offset,将runid 和 offset 发送给slave,slave 做保存,接受到的RDB进行数据恢复。实现全量复制。

slave发送同步指令给master(runid和offset 是之前保存的信息),master收到runid和offset后进行比对;

如果有一个不满足,重走全量复制;

如果校验通过,offset和runid忽略;

如果offset不同,将复制缓冲区的内容发送给slave实现部分复制。

 

Redis三种集群模式(怎么实现Redis的高可用)

一、主从复制模式

二、哨兵模式 :

就是对mater和slave的不断监控,当出现问题时,几个哨兵能做出投票决策,找到下一个master,并维持redis之间的稳定。

三、cluster 模式(分片模式):

如果Redis只用复制功能做主从,那么当数据量巨大的情况下,单机情况下可能已经承受不下一份数据,更不用说是主从都要各自保存一份完整的数据。在这种情况下,数据分片是一个非常好的解决办法:每台机器节点上存储不同的内容。

Redis的Cluster正是用于解决该问题。它主要提供两个功能:

  1. 自动对数据分片,落到各个节点上

  2. 即使集群部分节点失效或者连接不上,依然可以继续处理命令10. 使用过Redis分布式锁嘛?有哪些注意点呢?

单线程的Redis为什么那么快

()纯内存操作
()单线程操作,避免了频繁的上下文切换
()采用了非阻塞I/O多路复用机制

 

分布式锁

是控制分布式系统不同进程共同访问共享资源的一种锁的实现。秒杀下单、抢红包等等业务场景,都需要用到分布式锁



posted @ 2022-05-28 10:46  jason饼干大怪兽  阅读(41)  评论(0)    收藏  举报