7年前,出版了一本 Redis 神書
一直有在推特關注黃健宏老師的最新動態(tài),最近在嗶哩嗶哩看了他關于 《Redis 設計與實現(xiàn)》這本書的創(chuàng)作回憶錄[1]。

很有感觸,簡單記錄并分享一下,希望大家也能有所收獲。
《Redis 設計與實現(xiàn)》這本書我就不用多說了,可以說是學習 Redis 必看的一本書。這本書已經(jīng)出版 7 年,一共印刷了 24 次。
下文中的我指的是黃健宏老師。
初識 Redis 是在 2011 年,那會微博是非常熱門的一個網(wǎng)站。
和大家學習編程一樣,我當時就想:“自己能不能模仿微博實現(xiàn)一個呢?”。
于是,我便開始了模仿微博的編程實踐之路。
網(wǎng)站的初始技術棧使用的 Python + Flask +MySQL 。

在這個過程中,我發(fā)現(xiàn)使用 MySQL 不支持直接的集合運算操作, 實現(xiàn)“共同關注”(求交集)功能非常復雜,不符合常理!
既然遇到問題,那就要考慮能不能換一種思路解決這個問題(解決問題不應該掉進死胡同)。
考察了很多 NoSQL 數(shù)據(jù)庫之后,他最終找到了 Redis。

初遇 Redis ,我就被其簡單輕量且易用所吸引。
不過,彼時 Redis 還只是一個新興數(shù)據(jù)庫,用的人還比較少,中文資料也比較少。
于是,我便開始翻譯 Redis 官方文檔,并把這些翻譯之后的文檔被集中整理成了 Redis 命令參考[2] 。

為了宣傳《Redis 命令參考》,我在豆瓣發(fā)表過相關的一些帖子。

也正是因此這次的發(fā)帖經(jīng)歷,我才結(jié)識當時在阿里云工作的 hoterran,這個對《Redis 設計與實現(xiàn)》這本書的完成提供了很大的支持的朋友。
由于阿里云當時也在開發(fā)一個基于 Redis 的系統(tǒng),所以,hoterran 也深入研究過 Redis,并寫了很多 Redis 相關的技術文。
hoterran 寫的都是一些 Redis 的源代碼分析相關的文章。

hoterran 的源碼分析系列文章讓我深受震撼,這也是我第一次看源碼分析相關的文章。
當時的我也只是簡單會用 Redis 的一些常見命令,僅僅停留在軟件的使用上。

我們兩個彼此都很欣賞對方的文章,心里想著后面可以出一本 Redis 相關的書籍。
過了一個月后,hoterran 聯(lián)系到我,他說:“阿宏,機械工業(yè)出版社的吳怡編輯聯(lián)系到我,想讓我寫一本 Redis 方面的書籍。我一個人寫源碼分析可能寫不了多少,你有想法不?”。
我心里當時還挺高興的,我覺得 hoterran 的源碼分析系列的文章質(zhì)量很高,如果出書的話應該會反響不錯。
國慶節(jié)的時候,我倆便開始一起構(gòu)思 Redis 書的大綱。那時,我也才 21 歲。

不過,大綱寫好之后,寫書的計劃還是被擱置了。因為,年底的時候,hoterran 的孩子出生了,他要幫忙照顧孩子。
時間來到 2012 年!
這一年,日常對 Redis 的使用讓我對 Redis 有了更深刻的認識,
在這個期間,我還寫了一系列的 Redis 源碼分析的文章。

這個時候,我重新拾起了出一本 Redis 書的想法。
于是,我就找到 hoterran ,希望他能夠和我一起來撰寫。
讓我開心的是,hoterran 答應和我一起完成這件事情。
為此,我們還專門創(chuàng)建了一個用來寫作的 Organization 。其中的一個項目就是我們要寫的書籍,另外一個項目用來存放添加注釋后的 Redis 源碼。

不過,半個月后,這件事情又再一次終止,hoterran 因為工作調(diào)動退出了。
這對當時一腔熱血想要搞點事情的我沖擊還是挺大的。
于是,我開始反思,為什么這兩次寫書的經(jīng)歷最終都以失敗告終。
為此,我做了下面這些改變:
下定決心獨立完成 Redis 書的寫作,這對于我當時的能力來說是完全沒有問題的。 開始改良自己的風格,而不是模仿 hoterran 源碼分析文章的風格。 進一步精煉自己的文章,提高文章質(zhì)量。 受到 《Linux 內(nèi)核設計與實現(xiàn)》的影響,我將書籍的名字定為 《Redis 設計與實現(xiàn)》。

時間來到 2013 年!
這一年在網(wǎng)絡上發(fā)布了 《Redis 設計與實現(xiàn)》 的在線閱讀版[3] 。

發(fā)布之后,反響還可以,還有好幾家出版社聯(lián)系到我。說實話,我有點受寵若驚。
hoterran 也向機械工業(yè)出版社的吳怡編輯推薦了 《Redis 設計與實現(xiàn)》 的在線閱讀版。
因為和吳怡編輯接觸的比較早,我最終選了機械工業(yè)出版社。
不過,當時 《Redis 設計與實現(xiàn)》 在線閱讀版的內(nèi)容還比較少。
于是,我就和出版社商量說基于 Redis 3.0 測試版的代碼對內(nèi)容做進一步的完善。
時間來到 2014 年!
經(jīng)過一年時間,《Redis 設計與實現(xiàn)》第一版正式版正式問世!
回顧這些年,我總結(jié)了下面幾個對于個人發(fā)展比較有幫助的建議:
多做有意義的事情 :我在出書之前,堅持寫作以及翻譯優(yōu)秀的外文讓我有了寫書的基礎! 多交朋友 :寫作之路遇到的很多朋友對我影響很大,沒有他們的幫助,或許就沒有《Redis 設計與實現(xiàn)》 。 下定決心之后就去做,不要害怕 :剛開始兩次的寫書經(jīng)歷都失敗了,我覺得和我自己缺乏決心和勇氣有很大關系。 創(chuàng)新思維 :寫作過程中,我逐漸形成了自己的風格。為了提升閱讀體驗,我不是一大段一大段的貼代碼,而是將帶注釋的源碼單獨開源了出來。 專注于努力 :一年半的時間,我把我?guī)缀跛袝r間都用在了寫 《Redis 設計與實現(xiàn)》。
最后,簡單聊聊未來的打算。
《Redis 設計與實現(xiàn)》還是基于 Redis 3.0 來寫的,后續(xù)的話,我應該會基于最新版的 Redis 重新寫一本。
參考資料
《Redis設計與實現(xiàn)》這本書的創(chuàng)作回憶錄: https://www.bilibili.com/medialist/play/watchlater/BV1G64y1d7Co
[2]Redis 命令參考: http://redisdoc.com/
[3]《Redis 設計與實現(xiàn)》 的在線閱讀版: http://origin.redisbook.com/
