從OS等級探究: Redis運作原理程式逐行講解 | 誠品線上

從OS等級探究: Redis運作原理程式逐行講解

作者 梁國斌
出版社 聯合發行股份有限公司
商品描述 從OS等級探究: Redis運作原理程式逐行講解:用超高速C語言解析Unix下Redis程式及完整執行過程一次精通Redis、UNIX程式設計、分散式系統、儲存系統▍本書主要內容  本書深

內容簡介

內容簡介 用超高速C語言解析Unix下Redis程式及完整執行過程 一次精通Redis、UNIX程式設計、分散式系統、儲存系統 ▍本書主要內容 本書深入分析了Redis的實現原理,所以並不是Redis的入門書。為了儘量降低閱讀難度,本書複習了Redis各個核心功能的實現原理,提取了Redis核心程式(本書會儘量避免堆積程式),並以適量圖文,對Redis原始程式及其實現原理進行詳細分析,介紹Redis核心功能的設計思想和實現流程。 雖然本書的大部分內容是對Redis原始程式的分析,但是並不複雜,即使讀者只是簡單了解C語言的基礎語法,也可以輕鬆讀懂。 另外,本書結合Redis目前的最新版本6,分析了Redis最新特性,如Redis 6的ACL、Tracking等機制。為了照顧對Redis最新特性不熟悉的讀者,這部分內容提供了詳細的應用範例,幫助讀者循序漸進、由淺到深地學習和了解Redis最新特性。 本書也不侷限於Redis,而是由Redis延展出了兩方面內容: (1)Redis中使用的UNIX機制,包括UNIX網路程式設計、執行緒同步等內容,本書會 透過原始程式展示Redis如何使用這些UNIX機制。 (2)如何透過Redis實現一個分散式系統,主要是Sentinel、Cluster機制的實現原理。 本書使用的原始程式版本是Redis 6,本書提供的Redis操作案例,如無特殊說明,也是在Redis 6版本上執行的操作實例。 ▍本書特點 .分析Redis的字串、清單、雜湊、集合這幾種資料類型的編碼格式。 .介紹Redis事件機制與命令執行過程。 .利用I O重複使用模型,實現事件循環機制。 .說明Redis持久化與複製機制。 .檔案持久化、從節點複製,透過將資料複製到不同備份中,從而保持資料安全。 .使用RDB、AOF持久化機制,以及主從節點複製流程等。 .Redis分散式架構,從流行的分散式演算法Raft出發,分析Sentinel監控節點,Cluster叢集實現資料分片,支援動態新增、刪除叢集節點,以及容錯移轉。 .說明Redis中的進階特性,包括Redis交易、非阻塞刪除、ACL存取控制清單、Tracking機制、Lua指令稿、Module模組、Stream訊息流等內容。

產品目錄

產品目錄 第1部分 資料結構與編碼 01字串 1.1 redisObject 1.2 sds 02串列 2.1 ziplist 2.2 quicklist 03雜湊 3.1字典 3.2資料庫 04集合 4.1無序集合 4.2有序集合 第2部分 事件機制與指令執行 05 Redis啟動過程 5.1伺服器定義 5.2 main函數 5.3 Redis初始化過程 06事件機制 6.1 Redis事件機制概述 6.2 Redis啟動時建立的事件 6.3事件循環器的執行 07 epoll與網路通訊 7.1 I O重複使用模型 7.2 epoll網路程式設計 7.3 Redis網路通訊啟動過程 08用戶端 8.1定義 8.2建立用戶端 8.3關閉用戶端 8.4用戶端設定 09 Redis指令執行過程 9.1 RESP協定 9.2解析請求 9.3傳回回應 9.4執行指令 10網路I O執行緒 10.1執行緒概述 10.2互斥量概述 10.3初始化I O執行緒 10.4解析請求 10.5 I O執行緒主邏輯 10.6傳回回應 10.7 I O執行緒狀態切換 第3部分 持久化與複製 11 RDB 11.1 RDB定時邏輯 11.2 RDB持久化過程 11.3 RDB檔案載入過程 11.4 RDB檔案分析範例 11.5 RDB設定 11.6 UNIX寫入時複製機制 11.7 UNIX I O與快取 12 AOF 12.1 AOF定時邏輯 12.2 AOF持久化過程 12.3 AOF重新定義過程 12.4 AOF檔案載入過程 12.5 AOF檔案分析範例 12.6 AOF設定 13主從複製 13.1流程概述 13.2主從交握流程 13.3從節點同步流程 13.4主節點同步流程 13.5 PSYNC2 13.6主從複製流程 13.7定時邏輯 13.8主從複製設定 第4部分 分散式架構 14 Raft演算法 14.1分散式一致性的困難 14.2 CAP理論 14.3 Raft演算法的設計 14.4 Redis中的Raft演算法 15 Redis Sentinel 15.1 Redis Sentinel的應用範例 15.2 Redis Sentinel的實現原理 15.3 Redis Sentinel的容錯移轉 15.4用戶端互動 16 Redis Cluster 16.1 Redis Cluster的應用範例 16.2 Redis Cluster槽位管理 16.3 Redis Cluster啟動過程 16.4 Redis Cluster節點通訊 16.5 Redis Cluster的容錯移轉 第5部分 進階特性 17交易 17.1交易的應用範例 17.2交易的實現原理 18非阻塞刪除 18.1 UNLINK指令的實現原理 18.2後台執行緒 19記憶體管理 19.1動態記憶體分配器 19.2資料過期機制 19.3資料淘汰機制 20 Redis Stream 20.1 Redis Stream的應用範例 20.2 Stream的實現原理 21存取控制清單ACL 21.1 ACL的應用範例 21.2 ACL的實現原理 22 Redis Tracking 22.1 Redis Tracking的應用範例 22.2 Redis Tracking的實現原理 23 Lua指令稿 23.1 Lua指令稿的應用範例 23.2 Lua指令稿的實現原理 24 Redis Module 24.1 Module的應用範例 24.2 Module的實現原理

商品規格

書名 / 從OS等級探究: Redis運作原理程式逐行講解
作者 / 梁國斌
簡介 / 從OS等級探究: Redis運作原理程式逐行講解:用超高速C語言解析Unix下Redis程式及完整執行過程一次精通Redis、UNIX程式設計、分散式系統、儲存系統▍本書主要內容  本書深
出版社 / 聯合發行股份有限公司
ISBN13 / 9789860776904
ISBN10 / 9860776903
EAN / 9789860776904
誠品26碼 / 2682139727003
頁數 / 544
注音版 /
裝訂 / P:平裝
語言 / 1:中文 繁體
尺寸 / 23X17X2.7CM
級別 / N:無

試閱文字

自序 : ▍前言
Redis是開放原始碼的key-value儲存系統,可作為資料庫、快取、訊息元件。Redis的作者是Salvatore Sanfilippo(網名為antirez),他在2009年開發完成並開放了Redis原始碼。Redis由於性能極高、功能強大,迅速在業界流行,現已成為高併發系統中最常用的元件之一。
Redis提供了多種類型的資料結構,如字串(String)、雜湊(Hash)、串列(List)、集合(Set)、有序集合(Sorted Set)等。Redis還是分散式系統,主從叢集可以實現資料熱備份,檢查點(Sentinel)機制可以保證主從叢集高可用,Cluster叢集則提供了水平擴充的能力。Redis還提供了持久化、Lua指令稿、Module模組、Stream訊息流、Tracking機制等一系統強大功能,適用於各種業務場景。

▍寫作目的
雖然筆者主要使用Java語言開發程式,卻一直希望從原始程式層面深入分析一個C語言實現的分散式系統。C語言可以說是最接近低階語言的開發語言,分析C語言程式,可以讓我們更深入地了解作業系統的底層知識。於是,筆者學習了Redis原始程式,並編寫了本書。
為什麼選擇Redis呢?因為Redis是一個典型的「小而美」的程式。Redis實現簡單,原始程式非常優雅簡潔,閱讀起來並不吃力,而且Redis功能齊全,涵蓋了資料儲存、分散式、訊息流等許多特性,非常值得深入學習。
  透過編寫本書,筆者對Redis、UNIX程式設計、分散式系統、儲存系統都有了更深入的了解,再學習其他相關的系統(如MySQL、Nginx等),就可以舉一反三、觸類旁通。希望本書也可以幫助讀者百尺竿頭,更進一步。

▍本書結構
第1部分分析了Redis的字串、清單、雜湊、集合這幾種資料類型的編碼格式。編碼格式,即資料的儲存格式,對於資料庫,資料的儲存格式非常重要,如關聯式資料庫的行式儲存和列式儲存。而Redis作為記憶體中資料庫,對於資料編碼的整體設計思想是:最大限度地「以時間換空間」,從而最大限度地節省記憶體。這部分內容詳細分析了Redis對記憶體的使用如何達到「錙銖必較」的程度。
第2部分分析了Redis的核心流程,包括Redis事件機制與命令執行過程。Redis利用I/O重複使用模型,實現了自己的事件循環機制,而Redis底層由該事件機制驅動運行(很多遠端服務程式都使用類似的架構,如Nginx、MySQL等)。Redis事件機制設計優雅、實現簡單,並且性能卓越,可以說是「化繁為簡」。
第3部分分析了Redis持久化與複製機制。雖然Redis是記憶體中資料庫,但仍然最大限度地保證了資料的可靠性。不管是檔案持久化,還是從節點複製,核心思想都是一樣的:透過將資料複製到不同備份中,從而保持資料安全。這部分內容分析了RDB、AOF持久化機制,以及主從節點複製流程等內容,介紹了Redis資料是如何「不脛而走」的。
第4部分分析了Redis分散式架構。這部分內容從流行的分散式演算法Raft出發,分析了Sentinel如何監控節點,Cluster叢集如何實現資料分片,如何支援動態新增、刪除叢集節點,以及它們的「拿手好戲」——容錯移轉。
第5部分分析了Redis中的進階特性,包括Redis交易、非阻塞刪除、ACL存取控制清單、Tracking機制、Lua指令稿、Module模組、Stream訊息流等內容。Redis為各種高性能、高可用場景提供了非常全面的支援,可以說是「包羅萬象」。

▍致謝
感謝寫作過程中身邊朋友的支持,他們給予筆者很多的力量。感謝Redis的作者antirez,優秀的Redis離不開antirez的辛勤付出,向他致敬。感謝電子工業出版社博文視點的陳曉猛編輯,陳編輯專業的寫作指導和出版組織工作,使得本書得以順利出版。感謝電腦產業的內容創作者,他們的各種分享、網誌文章及圖書都在積極推動產業的發展,也為本書的編寫提供了靈感和參考。
梁國斌

最佳賣點

最佳賣點 : 用超高速C語言解析Unix下Redis程式及完整執行過程
一次精通Redis、UNIX程式設計、分散式系統、儲存系統