《Redis设计与实现》是一本由黄健宏著作,机械工业出版社出版的平装图书,本书定价:79.00,页数:388,特精心从网络上整理的一些读者的读后感,希望对大家能有帮助。
2016/3/29开始读,4/26读完全书。每一页用心阅读, 除了第372页对BITCOUNT使用的variable-precison SWAR算法没看懂之外,其他知识都完全理解。
2014年3月份出的书(也就是我整两年后才开始读),作者当时用的是redis 2.9的版本,而到我看的时候Redis已经出到3.0.7,但这不影响阅读,因为对于2.8版本的复制和Sentinel(HA)功能,还有3.0版本的集群功能都有介绍。
[整本书的结构]
全书包括四个部分,整体来看是从小到大,从简入深,从细节到整体的技术传授。每一章节的内容则是以总-分-总的格式书写,我很喜欢每一章节的一开始和最后的重点回顾,我一般都先看一下这两部分,从而对技术有整体了解,然后带着疑问和需求去细看,回过头来看这种学习效果甚好。
第一部分,数据结构与对象。个人认为是全书最精彩的部分,完全值回书价。作者仔细诠释了redis使用者经常使用的的五种常用数据结构(字符串、列表、哈希、集合、有序集合)之下的六种“底层”数据结构(sds, list, dict, skiplist, intset, skiplist). 数据结构之美被redis和盘托出,连续存储结构与不连续存储结构各自的优缺点被Redis挖掘到了极致。而在数据激增时,数据结构的“变型”更让我兴奋,大数据思想也在其中有所体现。
第二部分和第四部分,单机模式和独立功能部分,表述的比较平淡。可是拿出来说的是AOF/RDB持久化功能。缓存的使用为数据一致性和安全性保驾护航,好的设计好的思想。
第三部分,多机实现。包括,复制、HA和集群。我认为这些是redis可以称霸缓存级别数据库的关键所在。作者虽然书写的有些啰嗦,但无碍全局把控,核心设计思想都描述到位。回答了我掉电或短线后的数据如何保护这个问题。但是,对于HA和集群在功能方面的区别,我个人感觉写的不是很清晰,应该可以列一个表格做一下对比。
[总结]
在TeaHour(一个Ruby的Podcast)有一期,主持人推荐了这本书,当时我正看这本书看得痴迷,一听到有同好者,会心一笑。确实是好书一本,尤其是在知道作者是一位90后,并且钻研redis源码多年的份子上。我想是作者对Redis的这份激情,感染了读者们。当然他也很好地诠释了数据结构是如何与NoSQL结合,从而绽放精彩与完美的。
《Redis设计与实现》读后感(二):真的是设计与实现而非实践指南
全书读完最有收获的是第一部分:数据结构与对象
但是细细琢磨,配着书中丰富的图例,真是竟然看透看懂了
看完第一部分,才意识到,原来后边的内容,全是基于这些数据结构实现的底层逻辑
所以这一部分阅读时尽量不要跳过!
并且对于把Java当主编程语言的同学绝对有很多值得学习和思考的地方!
全书作者的文字表达能力虽有不是很通顺的地方,但是图例,完美地弥补了这一点
图例太丰富,太直白,有时候简直比文字都好理解,这一点太佩服作者了!
第二,三部分:单机/多机数据库的实现
既然读懂了Redis特有的数据结构及对象组织方式,那这部分对于理解Redis数据库的实现
简直是太简单了,并且读完有一种豁然开朗的感觉,假如要使用Java语言模拟实现,应该也不难!
第四部分:独立功能实现
全书只有这一部分有一小段儿看不懂:
在BITCOUNT 命令的实现中关于variable-precison SWAR算法的原理解释
虽配有文字和图例,但真是没看懂,没能全部理解!
所以,全书读下来,信息量太大,关于Redis的底层实现逻辑,终于有了个透彻的理解和学习
一开始以为本书会是一个实践指南类的,但是读完数据结构和数据库这两部分
才明白:源码已尽显,实践其实配合书中图例已经算是在边了解底层的同时边实践了
不过还是希望以后再版时,作者能加些实际生产使用的场景案例和运维相关的内容!
《Redis设计与实现》读后感(三):大神出品,精品之作
书的结构很清晰,从底层数据结构开始讲起,延伸到单机客户端服务器实现,事件机制,3.0版本的多机集群实现,以及独立功能的实现。原理阐述的很容易理解,可以看出作者对Redis源码确实下了一番功夫。如果只是对Redis的原理有兴趣,那么读这本书够了,但是想了解更多的实现细节,比如在重新分片过程中Redis是如何实现槽上某个键值对原子迁移的等问题,则需要自己去研读源码了。美中不足的地方在于作者没有将源码与讲解结合起来,而是给出的伪代码,虽然更加易于理解,但是总感觉少了点什么。看完这本书,再去看源码应该是一件相对容易的事情了。总体而言,是值得推荐的一本书,读完之后对nosql的理解感觉上了一个档次,而不仅仅停留在把它当做一个map的使用上。
《Redis设计与实现》读后感(四):推荐给对redis感兴趣的人的一本书
作为看过这本书网络旧版,以及读过redis源码的人,我认为这本书值得一读。与旧版相比,新版完全是重写了,添加了更多更详细的内容,可以看出作者的用心与诚意。而书中并没有简单的粘贴源码或者陷入代码级别的细节中,而是将源码中重要的逻辑和思想抽象出来,深入浅出做讲解。比如第二章2.2 “SDS与C字符串的区别”, 就很好的解释了为什么redis要采用sds的设计,让人能从中学习到redis设计的思想。书中的讲解配有大量的图,一般结合具体的例子,理解起来十分容易。
无论是只是想要理解redis设计的人,还是想要进一步深入阅读源码的人,这本书都是十分值得一读的。
勘误
91页,9.2节的例子中:
redis[2]> SET msg"another world"
msg与"another world"间少了空格。
103页,PEXPIREAT的伪代码中:
return0
return 与0间少了空格。
185页, 以下这句话:
1. 服务器只会在打印日志,更新服务器的lru时钟,决定是否执行持久化任务,计算服务器上线时间这类对时间精度要求不高的功能上”
这句话感觉没说完,应该是“...的功能上使用这两个属性”
疑问:
21.6节“limit选项的实现”,说会对键进行全排序后取出limit个元素。但是我印象中redis是采用了部分快排(partial quick sort)的算法,即只对一部分的元素排序。