第一讲:为何学习redis?

本学习笔记讲解redis6

一:为何学习redis?

(1):高性能

    底层C语音编写,内存数据库,通讯采用epoll非阻塞I/O多路复用机制;(开发者本人对操作系统非常精通)

(2):线程安全

    redis的操作都是单线程的,保证了原子操作,这样的设计可以保证避免高并发场景下数据不安全的问题;(对于redis6有人说已经是多线程的了,多线程主要体现在网络数据解析和同步数据上,对于底层内部的核心操作还是单线程来完成的,)

(3):功能丰富

    3.1:数据结构

      a:基本数据结构:String,List,HashSet,SortedSet

      b:高阶数据结构:GEO,BitMap,HyperLogLog

    3.2:持久化机制

      Redis的数据结构都是存放在内存当中的,但是在某些场景下,我们也希望把某些数据给存储起来,所以redis提供了对应的持久化机制;

      a:RDB持久化

      b:AOF持久化

      c:RDB-AOF混合持久化;

    3.3:主从模式

      redis提供了主从模式Master-Slave来解决并发问题;

    3.4:哨兵机制

      主从模式下要考虑到主节点是不能故障的,所以redis提供了哨兵机制Sentinel来解决主节点单点故障的问题;通过哨兵机制监护主节点,主节点故障以后,自动的完成主从切换;

    3.5:集群

      数据比较多的时候,数据存储可以使用cluster集群分片存储的方式;

    3.6:模块化

      redis在4.0的时候还引入了模块化机制,可以让我们自定义在项目中的个性化需求;

  总结:正因为如此丰富的功能可以满足很多的互联网应用场景,比如

      (1):缓存

      (2):分布式锁

      (3):队列

      (4):集合

      (5):GEO

      (6):BitMap操作等

 二:通过美食社交应用项目来学习Redis

  

 

 

 

 

 

 

 

最终架构如下图

 

 

 

我们将应用服务化注册-注册中心,然后通过网关进行统一的进行认证访问;最终的重点放在redis模块,我们的目标是搭建三主三从的redis集群,支撑整个项目的业务使用;并且在学习中我们是进行逐步的redis业务架构升级的:单节点---主从---哨兵---集群

 

三:学习方法: 以问带学

    Level0:系统搭建 SpringBoot整合Redis SpringCloud搭建微服务

       系统搭建好了以后系统的响应慢?

    Level1:用最合适的数据类型来缓存(因为redis底层针对不同的数据类型存储的时候会做一个优化处理)然后可以通过查看慢日志,优化BigKey,使用连接池来进行优化;

       系统的响应慢问题解决后,缓存异常了怎么办?

    Level2:分布式锁,LUR淘汰算法来解决缓存异常问题(这里还会学习缓存雪崩,缓存穿透,缓存击穿这些问题的解决方案)

       缓存异常解决了,数据丢失,数据不安全,数据一致性怎么办?

    Level3:可以采用RDB-AOF混合持久化的机制,在主从模式下还要考虑什么时候要全部复制,什么时候要部分复制,以及主从数据复制的一致性问题:

       数据问题解决了,主从复制故障如何解决?

    Level4:通过哨兵模式监控主节点,可以让我们自动的完成主从切换(哨兵是如何工作的,以及底层原理这里都会讲解);

       主从复制故障解决了以后,随着项目发展数据增多,存储不够用怎么办?

    Level5:可以通过集群的分片存储来解决这个问题(会学习到集群的内部原理,以及集群内部的哨兵机制和单独的哨兵机制会有什么不同?以及故障自动转移的学习);

       存储问题解决以后,服务器宕机怎么办?

    Level6:可以通过集群动态收缩,MOVED/ASK转向,故障演示与恢复方案来解决;

 

三:扩充学习

  

 

       

 

posted @ 2022-01-28 15:12  痞子胥  阅读(91)  评论(0)    收藏  举报