前不久,有一個讀者在後臺留言,說他面試 Java 開發工程師崗位時,居然大部分的面試問題都是關於 Redis ,他都差點都忘記了自己應聘的是 Java 工程師了。而然這種現象在現在的後端面試中很常見,對 Redis 的掌握已經變成了一項後端工程師必須具備的基礎技能了。
當我們翻開那些大廠的招聘要求,你就知道 Redis 真的是一個後端通用技術,俗稱通貨膨脹下的硬通貨。
Redis 作爲一個高性能的分佈式內存型數據庫,被國內外幾乎所有的大小型公司所使用,例如 Twitter、Stack Overflow、Github、阿里巴巴、騰訊、新浪微博等,它也早已成爲互聯網公司的標配,所以對 Redis 的掌握也成爲後端工程師必備的基礎技能,無論是面試還是實際工作中,我們每時每刻都需要和 Redis 打交道。
Redis 之所以如此流行,是因爲它的高效性和簡潔性,官方提供的 QPS(Query Per Second,每秒查詢率)已經超過 10 萬了,以下是官方提供的測試結果圖:
其中橫軸是連接數,縱軸是 QPS,有興趣的同學可以去嘗試一下 Redis 的基準測試程序。
但是除了高性能之外,Redis 還有一個重要的優點,它的版本更新速度很快,並且功能也越來越強大。比如之前只有 5 種數據類型,而到現在已經有 9 種數據類型。
之前最常用的功能是把它作爲緩存數據庫,而現在你可以使用它來實現消息隊列了。比如之前只能單機模式運行,現在已經發展新增了集羣模式運行了;比如之前只能單一模式持久化,選擇 RDB 或 AOF,現在已經可以混合持久化模式了,基本實現了魚和熊掌兼得的境界,特別是集羣功能和模塊機制的引入,幾乎讓 Redis 擁有了無限擴展的能力。
這些強大有實用的功能就像一個巨大的寶藏,但對於 90% 的開發者來說,只是掌握了 Redis 最基礎的 set 和 get 的方法,這讓人感到非常的可惜。
而且 Redis 從 2.x 很快速的升級到 6.x 也只經歷了短短的幾年,但作爲開源的高性能中間件的代表,目前在市面上關於它的核心與實戰資料並不多,尤其是新版本的 Redis 實戰資料。
所以爲了讓更多的開發朋友能夠深入瞭解和熟練的使用 Redis,我結合自己使用了 9 年 Redis 經驗開發了此專欄,希望這個專欄能夠擔負起讓更多開發者更好的使用 Redis 的光榮使命,能讓你們能更快速和全面的掌握 Redis 的實際業務場景運用。
爲什麼要學這個專欄?
Redis 已經成爲程序員必備的基礎技能
Redis 從 2009 年發展到現在,已經被國內外幾乎全部公司所使用,國內的 BATJ、新浪微博、360、小米;國外的微軟、Twitter、Stack Overflow、Github、暴雪等公司都在使用這個技術棧,而且作者從業十餘年的那些公司,無一例外也都在使用,所以你想成爲一名合格的工程師,Redis 是你必須要具備的基礎技能,無論是實際工作中還是競爭激烈的面試中,它對你來說都非常的重要。
大部分人只會用 Redis 的 Key/Value 功能
我身邊有很多朋友和同事,儘管已經有 5、6 年的工作經驗了,但對於 Redis 的掌握仍處在最初級的階段,例如,當存儲一個用戶信息時,只會把 User 對象先序列化成字符串,把字符串再存儲到 Redis 中,然後查詢的時候先從字符串中取出,再反序列化出來,其實我們完全可以使用 Hash 類型來存儲用戶信息,這樣我們就省去了序列化和反序列化的麻煩,如下圖所示:
Redis 還有很多高級功能他們都沒有使用到,而這些功能都非常的實用也非常的重要,例如以下這幾個:
- 主從複製、Redis Sentinel (哨兵) 和 Redis Cluster (集羣);
- 穩定有消息確認 (ACK) 的消息隊列 Stream;
- Redis 實現的延遲隊列和定時任務;
- 億萬級數據查詢、以及億萬級數據的秒去重;
- Redis 慢查詢與性能優化;
- Redis 運行原理以及常用數據類型的內部實現。
如果能掌握以上這些技能點,對你開發穩定並高效的程序有着至關重要的作用,同時也能爲你成爲架構師打好牢固的基礎。
專欄特點
圖文並茂,輕鬆易學
本專欄每篇文章都配有大量的圖片,如以下這些:
類似這樣的圖,文章裏還有很多,力求讓讀者們能輕鬆的看懂所有內容。
環境搭建 + 使用 + 原理 + 代碼實戰
本專欄裏面的所有知識點都是,理論 + 實戰的方式,例如主從同步、哨兵、Redis 集羣等功能都是先講它們的搭建、再講它們的運行原理、再結合 Java 代碼完成相關的操作,以這個的方式,力求把每一個知識點都講透,讓用戶知其然並知其所以然的同時,還能把每個知識點通過實戰的方式串聯起來,讓讀者融會貫通的同時還能學有所用。
涉及了幾乎所有的 Redis 核心功能
本專欄幾乎包含了 Redis 的所有核心知識點,從單機到集羣、從基礎數據類型到高級特性、有消息隊列還有全文搜索、慢查詢、性能調優、還有 Redis 本身一些過期策略、內存淘汰策略的機制和算法等。
最高階版本新特性
本專欄是結合最新版本 Redis 5.x 開發的,還有一些 Redis 6.x 的預覽特性等,Redis 這幾年版本的更新很快,從 2.x 到現在的 6.x (預覽版) 也只有短短的幾年時間,然而這幾年 Redis 的功能以及發生了很大的變化,例如 Redis 3 的集羣模式、Redis 4 的混合持久化、Redis 5 的可靠消息隊列等,都會包含到本系列的專欄中。
專欄內容
基礎篇
- Redis 是如何執行的?
- Redis 快速搭建與使用
- 字符串使用與內部實現原理
- 字典使用與內部實現原理
- 列表使用與內部實現原理
- 集合使用與內部實現原理
- 有序集合使用與內部實現原理
- Redis 持久化——RDB
- Redis 持久化——AOF
- Redis 持久化——混合持久化
- Redis 事務深入解析
- Redis 鍵值過期操作
- Redis 過期策略與源碼分析
進階篇
- Redis 管道技術——Pipeline
- 查詢附近的人——GEO
- 優秀的基數統計算法——HyperLogLog
- 遊標迭代器(過濾器)——Scan
- 內存淘汰機制與算法
- 消息隊列——發佈訂閱模式
- 消息隊列的其他實現方式
- 消息隊列終極解決方案——Stream(上)
- 消息隊列終極解決方案——Stream(下)
實戰篇
- 分佈式鎖詳解與代碼實戰
- 布隆過濾器安裝與使用及原理分析
- 實現延遲隊列的兩種方法—完整案例
- 定時任務案例實戰
- RediSearch 高性能的全文搜索引擎
- Redis 性能測試實戰
- Redis 慢查詢實戰
- Redis 性能優化實戰方案
- Redis 主從同步實戰
- Redis 哨兵模式實戰(上)
- Redis 哨兵模式實戰(下)
- Redis 集羣模式實戰(上)
- Redis 集羣模式實戰(下)
- Redis 問題彙總和相關解決方案
- 技能學習指南
- 加餐:Redis 的可視化管理工具
掃描下方即可快速獲取 9 年經驗👇
作者簡介
王磊 GitChat 暢銷作者、2019 年騰訊雲最佳年度作者,十餘年編程從業經驗,曾就職 360,有着豐富的系統設計、開發和調優的經驗,在不斷探索和學習的過程中,積累了寶貴的經驗,希望以技術傳播爲使命,幫助更多的人在技術的世界裏持續精進。
本專欄是我結合自己近十年使用 Redis 的經驗,曾依靠 Redis 爲多個大廠,如騰訊遊戲、360 遊戲、迅雷遊戲、多玩、17173、遊久等知名公司,提供了數據支持的經驗開發了這門專欄。
你能獲得什麼
• 超越 90% 的開發者掌握 Redis 最核心的功能原理
• 更多貼近業務所需的 Redis 實戰應用經驗
• 掌握最高階版 Redis 的特性和執行原理
• 更快速排查 Redis 故障的能力
• 獲得 Redis 分佈式集羣使用經驗
適合人羣
• 後端工程師
• 面試後端工程師
• 對 Redis 感興趣的人羣
• 在校生/培訓班學生
• 自學編程人羣
點擊鏈接也可以速速獲取👉《Redis 核心原理與實戰》