码农是否需要花心思去学redis?
作为从事底层C++开发的程序员,我认为很有必要去学习一下redis的源码。redis是一种非常高效的内存数据库。几乎是把计算机性能压榨到了极限。而底层C++程序员大部分都是从事的高性能开发,要大量与内存打交道。这区别于应用级开发,他们往往更喜欢用现成的数据库和重量级框架,更侧重业务逻辑而不是底层实现。后者没有必要学习redis的源码,会使用就可以了。而C++程序员学习redis源码,也不是主要目的如何用好redis,而是如何借鉴它先进的设计思想。
redis的代码写得非常优秀,代码量也不是特别大。内存分配、动态字符串、列表、集合、字典等的设计都非常巧妙。真的就是数据结构和算法的成功实践范本!
光是动态字符串的设计,就很值得借鉴。涉及到内存预先分配,内存重复利用,32字节以下的字符串如何嵌入(栈上分配)。它的字符串不是以\0结尾,也不是char[255]或char*这么简单粗暴。但是效率却比传统的方式更高效。
如果内存部分看完了,有时间,还可以了解一下它简洁的网络通信和集群功能,都很值得学习。这些思想,都可以或多或少地用到自己的底层代码上面。
redis目前没有Windows的官方实现,说明它为了追求简洁高效,并没有考虑跨平台。
要自己去从头摸索redis的源码,还是比较有难度的,建议找一些书籍或博客去先了解一下大致脉络。