1、学习路线
从这章开始,我们开始系统的学习redis,说白了,就是希望花很少的时间掌握更丰富的知识和经验,解决更多的问题,这就要我们能够抓住主线,在自己的脑海中绘制一幅Redis全景知识图,这完全是可以实现的。
从学习路线来说我们包括“两大维度,三大主线”
“两大维度”就是指系统维度和应用维度,“三大主线”也就是指高性能,高可靠和高可扩展(可以简称为 “三高”)
首先,从系统维度上说,需要了解Redis的各项关键技术的设计原理,这些可以作为我们判断和处理问题打下坚实的基础,而且,我们可以从中掌握一些优雅的系统设计规范,例如run-to-complete模型,epoll网络模型,这些可以应用到后续的系统开发实践中。
这里有一个问题,Redis作为庞大的键值数据库,可以说遍地都是知识,一抓一大把,我们怎能快速的知道学习那些?其实我们可以从“三大主线”入手
按照这样的维度和主线,我们就有了一个结构化的知识体系,当我们遇见问题时,可以按图索骥,快速找到影响这些问题的关键因素。
其次,在应用维度上,我们可以按照两种方式学习:“应用场景驱动”和“典型案例驱动”,一个是“面”,一个是“点”的掌握。
对于应用场景驱动来说,缓存和集群是Redis的两大广泛的应用场景,在这些场景中,本身就具有一条显示的技术链,比如提到缓存,有缓存机制,缓存替换,缓存异常等一连串的问题。
不过,并不是所有的东西都适合采用这种方式,比如说Redis丰富的数据类型,导致Redis有很多零碎的应用场景,只有特定的业务场景下(比如亿级访问压力场景)才会出现,并不是普遍现象,所以,我们也比较难于梳理出结构化的体系,这个时候就可以使用“典型案例驱动”的方式学习了,我们可以重点解读一些对Redis的“三高”特性影响较大的使用案例。
最后,我在极客网上课程学习中有个老师分享的Redis各大典型问题,同时结合相关的技术点,画了一张Redis的问题画像图,无论我们遇到什么问题,都可以哪出这张图,快速的按照问题来查找对应的Redis主线模块,然后再进一步定位到相应的技术点上。
举个例子,如果我们遇到了Redis的相应变慢问题,对照着这张图,就可以发现,这个问题和Redis的性能主线相关,而性能主线又和数据结构,异步机制,RBD,AOF重写相关,找到了影响的因素,解决起来就很容易了。
(1)高性能主线,包括线程模型,数据结构,持久化,网络框架;
(2)高可靠主线,包括主从复制,哨兵机制;
(3)高可扩展性主线,包括数据分片,负载均衡。
按照这样的维度和主线,我们就有了一个结构化的知识体系,当我们遇见问题时,可以按图索骥,快速找到影响这些问题的关键因素。
其次,在应用维度上,我们可以按照两种方式学习:“应用场景驱动”和“典型案例驱动”,一个是“面”,一个是“点”的掌握。
对于应用场景驱动来说,缓存和集群是Redis的两大广泛的应用场景,在这些场景中,本身就具有一条显示的技术链,比如提到缓存,有缓存机制,缓存替换,缓存异常等一连串的问题。
不过,并不是所有的东西都适合采用这种方式,比如说Redis丰富的数据类型,导致Redis有很多零碎的应用场景,只有特定的业务场景下(比如亿级访问压力场景)才会出现,并不是普遍现象,所以,我们也比较难于梳理出结构化的体系,这个时候就可以使用“典型案例驱动”的方式学习了,我们可以重点解读一些对Redis的“三高”特性影响较大的使用案例。
最后,我在极客网上课程学习中有个老师分享的Redis各大典型问题,同时结合相关的技术点,画了一张Redis的问题画像图,无论我们遇到什么问题,都可以哪出这张图,快速的按照问题来查找对应的Redis主线模块,然后再进一步定位到相应的技术点上。
举个例子,如果我们遇到了Redis的相应变慢问题,对照着这张图,就可以发现,这个问题和Redis的性能主线相关,而性能主线又和数据结构,异步机制,RBD,AOF重写相关,找到了影响的因素,解决起来就很容易了。