《redis 的实战和原理分析系列》## 引子:《redis设计与实现》的读后总结(一)

《redis设计与实现》总结

    • 个人体悟
    • 目录结构
    • 第一部分

个人体悟

有幸拜读了黄健宏前辈的大作《redis设计与实现》,不明觉厉啊,哈哈哈。首先感谢黄健宏老师,在之后的内容中可能会引用该书中的一些句子。建议有一定redis使用基础的同学都可以读读看,读后的个人感觉是全篇简练精辟,是我在阅读过的多本原理解析书籍中通俗易懂的书籍中排名靠前的一本。首先我们来说下一般人学习的过程,然后再解释为什么用这本书的总结作为整个redis系列的开篇引子。
一般我们现在学习新的技术中间件分为三个阶段(个人认为,不喜勿喷):

  1. 初级应用;公司要求你学习XX技术,并在项目中集成使用。
    这个时候其实你主要学习的就是怎么安装部署(哪怕你们公司的线上软件都是运维来安装的,但是本地开发还是需要你本地安装才能调用服务开发的吧),然后学习软件对应的客户端编程,比如redis的java客户端jedis或者spring-data-redis的redisTemplate等等,可能还要学习redis服务端控制台的一些基本命令和操作,方便调试,检查。
  2. 深入应用;有些技术只需要浅显了解就可以,但是也有一些是需要研发人员长期优化维护的,这个时候就需要更深入的了解并应用。
    这种就需要深入了解一些高级功能了,比如redis你得了解他的可使用的数据结构有哪些,在存储不同的数据的时候就会有更多的选择;了解aof和rdb的两种持久化模式的区别,便于你对数据可用性以及性能上的选择判断等等。总之在这个阶段,你需要对他提供所有可用的机制熟悉并能灵活适当的应用在你的项目场景中。
  3. 原理掌握;这个就高级拉,通俗的说法就是你得读懂源码,并了解他的设计意图。
    这一阶段个人认为就两件事,系统的阅读源码以及掌握其设计模式。

回过头来讲为什么要以《Redis设计与实现》这本书的读后总结作为整个系列的开篇引子,原因就是这本书刚好编写的内容是在深入应用和原理掌握之间的一个过程。有些朋友在深入应用这一阶段的时候会有很多迷惑,比如我自己,总是在熟悉某些功能的使用,但是不懂得如何选择他对应的场景,或者不了解为什么要选择这个功能,他给我的项目带来哪些好处。《Redis设计与实现》这本书并没有很深入的分析源码,分析每一个结构体,每一个方法。但是他可以快速的深入应用,追寻这些高级功能,机制的本质原理,可以让我们快速的从深入应用这个阶段过渡到原理掌握这个阶段。知其然而知其所以然,这个是我觉得这本书高级且实用的所在。

目录结构

全书主要分为四个部分:

  1. 数据结构与对象
  2. 单机数据库的实现
  3. 多机数据库的实现
  4. 独立功能的实现

第一部分

这一部分主要是在介绍数据结构以及数据结构组成的redis的基础的数据对象。数据对象一般在初级应用的阶段,大部分人都会有涉及到一些,知道redis能存储的数据对象类型有5种:string,list,map,set,zset。这一部分讲解的就是在string,list,map,set,zset这5个对象底层的基本数据结构是哪些,数据结构的实现原理是什么,并简单讲解了在redis内部机制中数据对象是如何共享,如何回收的(这里有一个常见的知识点:引用计数算法,给一个对象中添加一个引用计数器,初始为1,每当有一个地方引用他时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象都不再被继续使用,你会在很多软件的对象回收机制中看到这个算法,比如jvm对象回收的早期模式,现在已经用可达性分析算法了,比如redis的对象回收)。如果对数据结构不感兴趣的同学其实可以先跳过这一部分,但是个人建议数据结构最后都是要捡回起来的东西,现在不学,等你水平到了能自己开始编写中间件的时候,还是得学习,博主在数据结构方面也是菜鸟,深受其害。

你可能感兴趣的:(redis引子)