Day768.大佬推荐的经典的Redis学习资料 -Redis 核心技术与实战
大佬推薦的經(jīng)典的Redis學(xué)習(xí)資料
Hi,我是阿昌,今天學(xué)習(xí)記錄的是關(guān)于經(jīng)典的Redis學(xué)習(xí)資料。
一、經(jīng)典書(shū)籍
在學(xué)習(xí) Redis 時(shí),最常見(jiàn)的需求有三個(gè)方面。
- 日常使用操作:比如常見(jiàn)命令和配置,集群搭建等;
- 關(guān)鍵技術(shù)原理:比如我們介紹過(guò)的 IO 模型、AOF 和 RDB 機(jī)制等;
- 在實(shí)際使用時(shí)的經(jīng)驗(yàn)教訓(xùn),比如,Redis 響應(yīng)變慢了怎么辦?Redis 主從庫(kù)數(shù)據(jù)不一致怎么辦?等等。
1、工具書(shū):《Redis 使用手冊(cè)》
一本好的工具書(shū),可以幫助快速地了解或查詢 Redis 的日常使用命令和操作方法。
《Redis 使用手冊(cè)》,就是一本非常好用的工具書(shū)。
在這本書(shū)中,作者把 Redis 的內(nèi)容分成了三大部分,分別是“數(shù)據(jù)結(jié)構(gòu)與應(yīng)用”“附加功能”和“多機(jī)功能”。
其中,最有用的就是“數(shù)據(jù)結(jié)構(gòu)與應(yīng)用”的內(nèi)容,因?yàn)樗峁┝素S富的操作命令介紹,不僅涵蓋了 Redis 的 5 大基本數(shù)據(jù)類型的主要操作命令,還介紹了 4 種擴(kuò)展數(shù)據(jù)類型的命令操作,包括位圖、地址坐標(biāo)、HyperLogLog 和流。
只要這本書(shū)在手邊,就能很輕松地了解和正確使用 Redis 的大部分操作命令了。
不過(guò),如果想要了解最全、最新的 Redis 命令操作,建議你把 Redis 的命令參考網(wǎng)站收錄到你的瀏覽器書(shū)簽中,隨用隨查。
目前,Redis 官方提供的所有命令操作參考肯定是最全、最新的,建議優(yōu)先使用這個(gè)官方網(wǎng)站。在這個(gè)網(wǎng)頁(yè)上查找命令操作非常方便,我們既可以通過(guò)命令操作的名稱直接查找,也可以根據(jù) Redis 的功能,分類查找對(duì)應(yīng)功能下的操作,例如和集群相關(guān)的操作,和發(fā)布訂閱相關(guān)的操作。
中文版,提供一個(gè)翻譯版的命令參考。
除了提供 Redis 的命令操作介紹外,《Redis 使用手冊(cè)》還提供了“附加功能”部分,介紹了 Redis 數(shù)據(jù)庫(kù)的管理操作和過(guò)期 key 的操作,這對(duì)我們進(jìn)行 Redis 數(shù)據(jù)庫(kù)運(yùn)維(例如遷移數(shù)據(jù)、清空數(shù)據(jù)庫(kù)、淘汰數(shù)據(jù)等)提供了操作上的指導(dǎo)。
有了工具手冊(cè),就能很輕松地掌握不同命令操作的輸入?yún)?shù)、返回結(jié)果和復(fù)雜度了。
2、原理書(shū):《Redis 設(shè)計(jì)與實(shí)現(xiàn)》
雖然《Redis 設(shè)計(jì)與實(shí)現(xiàn)》和《Redis 使用手冊(cè)》是同一個(gè)作者寫(xiě)的,但是它們的側(cè)重點(diǎn)不一樣,這本書(shū)更加關(guān)注 Redis 關(guān)鍵機(jī)制的實(shí)現(xiàn)原理。
介紹 Redis 原理的資料有很多,這本書(shū)講解得非常透徹,尤其是在 Redis 底層數(shù)據(jù)結(jié)構(gòu)、RDB 和 AOF 持久化機(jī)制,以及哨兵機(jī)制和切片集群的介紹上,非常容易理解,建議重點(diǎn)學(xué)習(xí)下這些部分的內(nèi)容。
除了文字講解,這本書(shū)還針對(duì)一些難點(diǎn)問(wèn)題,例如數(shù)據(jù)結(jié)構(gòu)的組成、哨兵實(shí)例間的交互過(guò)程、切片集群實(shí)例的交互過(guò)程等,都使用了非常清晰的插圖來(lái)表示,可以最大程度地降低學(xué)習(xí)難度。
3、實(shí)戰(zhàn)書(shū):《Redis 開(kāi)發(fā)與運(yùn)維》
在實(shí)戰(zhàn)方面,《Redis 開(kāi)發(fā)與運(yùn)維》是一本不錯(cuò)的參考書(shū)。
首先,它介紹了 Redis 的 Java 和 Python 客戶端,以及 Redis 用于緩存設(shè)計(jì)的關(guān)鍵技術(shù)和注意事項(xiàng),這些內(nèi)容在其他參考書(shū)中不太常見(jiàn),你可以重點(diǎn)學(xué)習(xí)下。
其次,它圍繞客戶端、持久化、主從復(fù)制、哨兵、切片集群等幾個(gè)方面,著重介紹了在日常的開(kāi)發(fā)運(yùn)維過(guò)程中遇到的問(wèn)題和“坑”,都是經(jīng)驗(yàn)之談,可以幫助你提前做規(guī)避。
另外,這本書(shū)還針對(duì) Redis 阻塞、優(yōu)化內(nèi)存使用、處理 bigkey 這幾個(gè)經(jīng)典問(wèn)題,提供了解決方案,非常值得一讀。
在閱讀的時(shí)候,可以把目錄里的問(wèn)題整理一下,做成列表,這樣,在遇到問(wèn)題的時(shí)候,就可以對(duì)照著這個(gè)列表,快速地找出原因,并且利用書(shū)中的方案去解決問(wèn)題了。
當(dāng)然,要想真正提升實(shí)戰(zhàn)能力,光讀書(shū)是遠(yuǎn)遠(yuǎn)不夠的,畢竟,“紙上得來(lái)終覺(jué)淺”。
兩條建議。
-
閱讀源碼。讀源碼其實(shí)也是一種實(shí)戰(zhàn)鍛煉,可以幫助你從代碼邏輯中徹底理解 Redis 系統(tǒng)的實(shí)際運(yùn)行機(jī)制,當(dāng)遇到問(wèn)題時(shí),可以直接從代碼層面進(jìn)行定位、分析和解決問(wèn)題。閱讀 Redis 源碼,最直接的材料就是 Redis 在 GitHub 上的源碼庫(kù)。另外,有一個(gè)網(wǎng)站提供了 Redis 3.0 源碼的部分中文注釋,你也可以參考一下。
-
親自動(dòng)手實(shí)踐。“沒(méi)有服務(wù)器無(wú)法實(shí)踐”,其實(shí),Redis 運(yùn)行后本身就是一個(gè)進(jìn)程,是可以直接使用自己的電腦進(jìn)行部署的。只要不是性能測(cè)試,在功能測(cè)試或者場(chǎng)景模擬上,自己電腦的環(huán)境一般都是可以勝任的。比如說(shuō),要想部署主從集群或者切片集群,模擬主庫(kù)故障,我們完全可以在自己電腦上起多個(gè) Redis 實(shí)例來(lái)完成,只要保證它們的端口號(hào)不同,就可以了。好了,關(guān)于 Redis 本身的書(shū)籍的推薦,就先告一段落了,接下來(lái),我想再給你分享一些擴(kuò)展內(nèi)容。
二、擴(kuò)展閱讀方向
Redis 的很多關(guān)鍵功能,其實(shí)和操作系統(tǒng)底層的實(shí)現(xiàn)機(jī)制是相關(guān)的,比如說(shuō),非阻塞的網(wǎng)絡(luò)框架、RDB 生成和 AOF 重寫(xiě)時(shí)涉及到的 fork 和寫(xiě)時(shí)復(fù)制機(jī)制,等等。
另外,Redis 主從集群中的哨兵機(jī)制,以及切片集群的數(shù)據(jù)分布還涉及到一些分布式系統(tǒng)的內(nèi)容。
一張圖片,展示一下 Redis 的關(guān)鍵機(jī)制和操作系統(tǒng)、分布式系統(tǒng)的對(duì)應(yīng)知識(shí)點(diǎn)。
AOF 日志的刷盤(pán)時(shí)機(jī)和操作系統(tǒng)的 fsync 機(jī)制、高速頁(yè)緩存的刷回有關(guān),而網(wǎng)絡(luò)框架跟 epoll 有關(guān),RDB 生成和 AOF 重寫(xiě)與 fork、寫(xiě)時(shí)復(fù)制有關(guān)
此外,哨兵選主過(guò)程,其實(shí)是分布式系統(tǒng)中的經(jīng)典的 Raft 協(xié)議的執(zhí)行過(guò)程,如果你比較了解 Raft 協(xié)議,就能很輕松地掌握哨兵選主的運(yùn)行機(jī)制了。
切片集群的 Redis Cluster 方案,其實(shí),業(yè)界還有一種實(shí)現(xiàn)方案,就是 ShardedJedis,而它就用到了分布式系統(tǒng)中經(jīng)典的一致性哈希機(jī)制。
所以,如果說(shuō)你希望自己的實(shí)戰(zhàn)能力能夠更強(qiáng),建議你讀一讀操作系統(tǒng)和分布式系統(tǒng)方面的經(jīng)典教材,比如《操作系統(tǒng)導(dǎo)論》。
尤其是這本書(shū)里對(duì)進(jìn)程、線程的定義,對(duì)進(jìn)程 API、線程 API 以及對(duì)文件系統(tǒng) fsync 操作、緩存和緩沖的介紹,都是和 Redis 直接相關(guān)的;
再比如,《大規(guī)模分布式存儲(chǔ)系統(tǒng):原理解析與架構(gòu)實(shí)戰(zhàn)》中的分布式系統(tǒng)章節(jié),可以讓你掌握 Redis 主從集群、切片集群涉及到的設(shè)計(jì)規(guī)范。
了解下操作系統(tǒng)和分布式系統(tǒng)的基礎(chǔ)知識(shí),既能幫你厘清容易混淆的概念(例如 Redis 主線程、子進(jìn)程),也可以幫助將一些通用的設(shè)計(jì)方法(例如一致性哈希)應(yīng)用到日常的實(shí)踐中,做到融會(huì)貫通,舉一反三。
三、總結(jié)
三本參考書(shū),分別對(duì)應(yīng)了 Redis 的命令操作使用、關(guān)鍵機(jī)制的實(shí)現(xiàn)原理,以及實(shí)戰(zhàn)經(jīng)驗(yàn),還介紹了 Redis 操作命令快速查詢的兩個(gè)網(wǎng)站,這可是日常使用 Redis 的必備工具,可以提升你使用操作 Redis 的效率。
另外,對(duì)于 Redis 關(guān)鍵機(jī)制涉及到的擴(kuò)展知識(shí)點(diǎn),從操作系統(tǒng)和分布式系統(tǒng)兩個(gè)方面進(jìn)行了補(bǔ)充。
如果覺(jué)得這些書(shū)讀起來(lái)困難,推薦一本《Redis 深度歷險(xiǎn):核心原理與應(yīng)用實(shí)踐》,這本書(shū)很薄,而且最大的特點(diǎn)是講解接地氣,它可以讓你對(duì)Redis的基礎(chǔ)使用、業(yè)務(wù)場(chǎng)景、原理分析有一個(gè)基本的認(rèn)識(shí)和了解,作為入門(mén)和進(jìn)階非常合適,起碼可以讓重新樹(shù)立起深入學(xué)習(xí)Redis的信心。
另外,真心建議大家試著去讀一下Redis源碼,沒(méi)有想象的那么難,而且Redis的代碼質(zhì)量非常高,由于是單線程的內(nèi)存數(shù)據(jù)庫(kù),沒(méi)有多線程運(yùn)行時(shí)的復(fù)雜邏輯,讀起來(lái)非常順暢!
總結(jié)
以上是生活随笔為你收集整理的Day768.大佬推荐的经典的Redis学习资料 -Redis 核心技术与实战的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 专题三--1005
- 下一篇: DBUtil-一款简单好用的数据库操作工