[Redis知識體系] 一文全面總結Redis知識體系
阿新 • • 發佈:2021-03-10
# ♥Redis教程 - Redis知識體系詳解♥
>本系列主要對Redis知識體系進行詳解。@pdai
- [♥Redis教程 - Redis知識體系詳解♥](#redis教程---redis知識體系詳解)
- [知識體系](#知識體系)
- [學習資料](#學習資料)
## 知識體系
*知識體系*
![](https://pdai.tech/_images/db/redis/db-redis-overview.png)
*相關文章*
> 首先,我們通過學習Redis的概念基礎,瞭解它適用的場景。
+ [Redis入門 - Redis概念和基礎](https://pdai.tech/md/db/nosql-redis/db-redis-introduce.html)
+ Redis是一種支援key-value等多種資料結構的儲存系統。可用於快取,事件釋出或訂閱,高速佇列等場景。支援網路,提供字串,雜湊,列表,佇列,集合結構直接存取,基於記憶體,可持久化。
> 其次,這些適用場景都是基於Redis支援的資料型別的,所以我們需要學習它支援的資料型別;同時在redis優化中還需要對底層資料結構瞭解,所以也需要了解一些底層資料結構的設計和實現。
![](https://pdai.tech/_images/db/redis/db-redis-object-2-2.png)
+ [Redis入門 - 資料型別:5種基礎資料型別詳解](https://pdai.tech/md/db/nosql-redis/db-redis-data-types.html)
+ Redis所有的key(鍵)都是字串。我們在談基礎資料結構時,討論的是儲存值的資料型別,主要包括常見的5種資料型別,分別是:String、List、Set、Zset、Hash
+ [Redis入門 - 資料型別:3種特殊型別詳解](https://pdai.tech/md/db/nosql-redis/db-redis-data-type-special.html)
+ Redis除了上文中5種基礎資料型別,還有三種特殊的資料型別,分別是 HyperLogLogs(基數統計), Bitmaps (點陣圖) 和 geospatial (地理位置)
+ [Redis入門 - 資料型別:Stream詳解](https://pdai.tech/md/db/nosql-redis/db-redis-data-type-stream.html)
+ Redis5.0 中還增加了一個數據結構Stream,它借鑑了Kafka的設計,是一個新的強大的支援多播的可持久化的訊息佇列。
+ [Redis進階 - 底層資料結構:物件機制詳解](https://pdai.tech/md/db/nosql-redis/db-redis-x-redis-object.html)
+ 我們在前文已經闡述了[Redis 5種基礎資料型別詳解](https://pdai.tech/md/db/nosql-redis/db-redis-data-types.html),分別是字串(string)、列表(list)、雜湊(hash)、集合(set)、有序集合(zset),以及5.0版本中[Redis Stream結構詳解](https://pdai.tech/md/db/nosql-redis/db-redis-data-type-stream.html);那麼這些基礎型別的底層是如何實現的呢?Redis的每種物件其實都由**物件結構(redisObject)** 與 **對應編碼的資料結構**組合而成, 本文主要介紹**物件結構(redisObject)** 部分。。
+ [Redis進階 - 底層資料結構:底層資料結構詳解](https://pdai.tech/md/db/nosql-redis/db-redis-x-redis-ds.html)
+ 前文是第一部分底層設計:物件機制詳解, 本文主要介紹底層資料結構 部分。
+ [Redis進階 - 底層資料結構:redis物件與編碼(底層結構)對應關係詳解](https://pdai.tech/md/db/nosql-redis/db-redis-data-type-enc.html)
+ 在學習完[底層資料結構](https://pdai.tech/md/db/nosql-redis/db-redis-x-redis-ds.html)之後,我們終於可以結合前文內容闡述redis物件及編碼之間的關係了。
> 再者,需要學習Redis支援的核心功能,包括持久化,訊息,事務,高可用;高可用方面包括,主從,哨兵等;高可拓展方面,比如 分片機制等。
+ [Redis進階 - 持久化:RDB和AOF機制詳解](https://pdai.tech/md/db/nosql-redis/db-redis-x-rdb-aof.html)
+ 為了防止資料丟失以及服務重啟時能夠恢復資料,Redis支援資料的持久化,主要分為兩種方式,分別是RDB和AOF; 當然實際場景下還會使用這兩種的混合模式。
+ [Redis進階 - 訊息傳遞:釋出訂閱模式詳解](https://pdai.tech/md/db/nosql-redis/db-redis-x-pub-sub.html)
+ Redis 釋出訂閱(pub/sub)是一種訊息通訊模式:傳送者(pub)傳送訊息,訂閱者(sub)接收訊息。
+ [Redis進階 - 事件:Redis事件機制詳解](https://pdai.tech/md/db/nosql-redis/db-redis-x-event.html)
+ Redis 採用事件驅動機制來處理大量的網路IO。它並沒有使用 libevent 或者 libev 這樣的成熟開源方案,而是自己實現一個非常簡潔的事件驅動庫 ae_event。
+ [Redis進階 - 事務:Redis事務詳解](https://pdai.tech/md/db/nosql-redis/db-redis-x-trans.html)
+ Redis 事務的本質是一組命令的集合。事務支援一次執行多個命令,一個事務中所有命令都會被序列化。在事務執行過程,會按照順序序列化執行佇列中的命令,其他客戶端提交的命令請求不會插入到事務執行命令序列中。
+ [Redis進階 - 高可用:主從複製詳解](https://pdai.tech/md/db/nosql-redis/db-redis-x-copy.html)
+ 我們知道要避免單點故障,即保證高可用,便需要冗餘(副本)方式提供叢集服務。而Redis 提供了主從庫模式,以保證資料副本的一致,主從庫之間採用的是讀寫分離的方式。本文主要闡述Redis的主從複製。
+ [Redis進階 - 高可用:哨兵機制(Redis Sentinel)詳解](https://pdai.tech/md/db/nosql-redis/db-redis-x-sentinel.html)
+ 在上文主從複製的基礎上,如果注節點出現故障該怎麼辦呢? 在 Redis 主從叢集中,哨兵機制是實現主從庫自動切換的關鍵機制,它有效地解決了主從複製模式下故障轉移的問題。
+ [Redis進階 - 高可拓展:分片技術(Redis Cluster)詳解](https://pdai.tech/md/db/nosql-redis/db-redis-x-cluster.html)
+ 前面兩篇文章,主從複製和哨兵機制保障了高可用,就讀寫分離而言雖然slave節點來擴充套件主從的讀併發能力,但是寫能力和儲存能力是無法進行擴充套件的,就只能是master節點能夠承載的上限。如果面對海量資料那麼必然需要構建master(主節點分片)之間的叢集,同時必然需要吸收高可用(主從複製和哨兵機制)能力,即每個master分片節點還需要有slave節點,這是分散式系統中典型的縱向擴充套件(叢集的分片技術)的體現;所以在Redis 3.0版本中對應的設計就是Redis Cluster。
> 最後,就是具體的實踐以及實踐中遇到的問題和解決方法了:在不同版本中有不同特性,所以還需要了解版本;以及效能優化,大廠實踐等。
+ [Redis進階 - 快取問題:一致性, 穿擊, 穿透, 雪崩, 汙染等](https://pdai.tech/md/db/nosql-redis/db-redis-x-cache.html)
+ Redis最常用的一個場景就是作為快取,本文主要探討作為快取,在實踐中可能會有哪些問題?比如一致性, 穿擊, 穿透, 雪崩, 汙染等
+ [Redis進階 - 版本特性: Redis4.0、5.0、6.0特性整理](https://pdai.tech/md/db/nosql-redis/db-redis-x-version-lastest.html)
+ 在學習Redis知識體系時,我們難免會需要檢視版本實現之間的差異,本文主要整理Redis較為新的版本的特性。
+ [Redis進階 - 效能調優:Redis效能調優詳解](https://pdai.tech/md/db/nosql-redis/db-redis-x-performance.html)
+ Redis 的效能問題,涉及到的知識點非常廣,幾乎涵蓋了 CPU、記憶體、網路、甚至磁碟的方方面面;同時還需要對上文中一些基礎或底層有詳細的瞭解。針對Redis的效能調優,這裡整理分享一篇水滴與銀彈(公眾號)的文章,這篇文章可以幫助你構築Redis效能調優的知識體系。
+ [Redis大廠經驗 - 微博:萬億級日訪問量下,Redis在微博的9年優化歷程](https://pdai.tech/md/db/nosql-redis/db-redis-y-weibo.html)
+ 再分享一篇微博使用redis的經驗的文章,因為Redis在微博內部分佈在各個應用場景,比如像現在春晚必爭的“紅包飛”活動,還有像粉絲數、使用者數、閱讀數、轉評贊、評論蓋樓、廣告推薦、負反饋、音樂榜單等等都有用到Redis;我們可以通過大廠使用redis的經驗來強化對redis使用上的認知。
## 學習資料
+ Redis官網:http://redis.io/
+ Redis官方文件:http://redis.io/documentation
+ Redis教程:http://www.w3cschool.cn/redis/redis-intro.html
+ Redis下載:http://redis.io/download
+ redis英文文件 https://redis.io/topics/data-types
+ redis中文文件 http://www.redis.cn/documentation.html
+ 《redis設計與實現 3.0版本》 http://redisbook.com/index.html
+ redis菜鳥教程 https://www.runoob.com/redis/redis-tutorial.html
+ redis原始碼解讀 3.2.8版本 https://blog.csdn.net/men_wen/article/details/75668345
除此之外,我還推薦你看下 極客時間 《Redis核心技術與實戰》(作者:蔣德鈞)的相關內容,它是我看到的為數不多的含有實戰經驗比較多的專欄,部分文章中圖片也來源於這個系列。