天天看點

騰訊專家手敲萬字《Redis源碼日志筆記》

引言

本文分為六個部分,包括 redis 源碼日志,服務架構,基礎資料結構,内功心法,應用,其他,從源碼層面循序漸進的了解redis。可以快速、有效地了解redis 的内部構造以及運作機制,更好、更高效地使用redis。

本文架構如下

第一部分,主要是在閱讀代碼過程中的日志和筆記;

第二部分,主要介紹了 redis 的主要架構,以及 redis 是如何提供服務的,從一個最簡單的指令開始講起;

第三部分,主要介紹 redis 底層用作存儲的資料結構,這一部分很有趣;

第四部分,主要講解了 redis 的核心功能,包括持久化,訂閱/釋出模式,主從複制,事務機制,叢集等等;

第五部分,展示了 redis 幾個簡單的應用;

第六部分,介紹了 redis 和 memcached 的差別,以及稍稍講解了 memcached。

騰訊專家手敲萬字《Redis源碼日志筆記》

redis服務架構

①初探 redis

redis 在緩存系統所處的位置

騰訊專家手敲萬字《Redis源碼日志筆記》

②redis 事件驅動詳解

事件驅動資料結構

事件循環中心

騰訊專家手敲萬字《Redis源碼日志筆記》

redis 事件驅動原理

事件注冊詳解

準備監聽工作

為監聽套接字注冊事件

事件循環

事件觸發

騰訊專家手敲萬字《Redis源碼日志筆記》

③redis 是如何提供服務的

initserverconfig()

aemain()

新連接配接的處理流程

請求的處理流程

執行指令

在哪裡回複用戶端

騰訊專家手敲萬字《Redis源碼日志筆記》

redis 基礎資料結構

①redis 資料結構綜述

一覽 redis 資料結構:

redis 指令和相關的資料結構

redis 資料結構 redisob

redis 資料結構 sds

redis 資料結構 dict

redis 資料結構 ziplist

redis 資料結構 skiplist

redis 資料結構 intset

騰訊專家手敲萬字《Redis源碼日志筆記》

redis 内功心法

①redis 資料淘汰機制

概述

lru 資料淘汰機制

ttl 資料淘汰機制

在哪裡開始淘汰資料

騰訊專家手敲萬字《Redis源碼日志筆記》

②rdb 持久化政策

簡介 redis 持久化 rdb、aof

資料結構 rio

rdb 持久化的運作機制

rdb 資料的組織方式

騰訊專家手敲萬字《Redis源碼日志筆記》

③aof 持久化政策

簡介

aof 資料組織方式

aof 持久化運作機制

細說更新緩存

aof 恢複過程

aof 的适用場景

騰訊專家手敲萬字《Redis源碼日志筆記》

④訂閱釋出機制

兩種訂閱

訂閱相關資料結構

訂閱過程

消息釋出

騰訊專家手敲萬字《Redis源碼日志筆記》

⑤主從複制

積壓空間

主從資料同步機制概述

全同步

部分同步

緩存主機

總結

騰訊專家手敲萬字《Redis源碼日志筆記》

⑥redis 事務機制

redis 事務簡述

redis 指令隊列

鍵值的監視

redis 事務的執行與取消

redis 事務番外篇

騰訊專家手敲萬字《Redis源碼日志筆記》

⑦redis 與 lua 腳本

lua 簡介

redis 為什麼添加 lua 支援

lua 環境的初始化

lua 腳本執行 redis 指令

redis lua 腳本的執行過程

髒指令

lua 腳本的傳播

騰訊專家手敲萬字《Redis源碼日志筆記》

⑧redis 哨兵機制

redis 哨兵的服務架構

定時程式

哨兵與 redis 伺服器的互聯

hello 指令

info 指令

心跳

線上狀态監測

故障修複

redis 螢幕

redis 資料遷移

騰訊專家手敲萬字《Redis源碼日志筆記》

⑨redis 叢集(上)

前奏

談一緻性雜湊演算法(consistent hashing)

怎麼實作?

twemproxy - redis 叢集管理方案

redis 官方版本支援的叢集

騰訊專家手敲萬字《Redis源碼日志筆記》

⑩redis 叢集(下)

資料結構

資料通路

新的節點

心跳機制

故障修複的協定

資料遷移

騰訊專家手敲萬字《Redis源碼日志筆記》

redis 應用

積分排行榜

分布式鎖

消息中間件

web 伺服器存儲 session

騰訊專家手敲萬字《Redis源碼日志筆記》

其他

①記憶體資料管理

共享對象

兩種記憶體配置設定政策

memory aware 支援

zmalloc_get_private_dirty() 函數

騰訊專家手敲萬字《Redis源碼日志筆記》

②redis 日志和斷言

redis 日志

redis 斷言

騰訊專家手敲萬字《Redis源碼日志筆記》

③redis 與 memcache

單程序單線程與單程序多線程

豐富與簡單的資料結構

性能測試

騰訊專家手敲萬字《Redis源碼日志筆記》

④小剖memcache

初始化過程

unix 域套接字和 udp/tcp 工作模式

工作線程管理和線程調配方式

存儲容器

連接配接管理

一個請求的工作流程

memcached 的分布式

騰訊專家手敲萬字《Redis源碼日志筆記》

⑤memcached slab 配置設定政策

memcached slab 概述

slab class

記憶體配置設定的過程

lru 機制

騰訊專家手敲萬字《Redis源碼日志筆記》

⑥源碼閱讀工具

sublime text 2/3

eclipse cdt

source insight

騰訊專家手敲萬字《Redis源碼日志筆記》

完結

redis基于記憶體,常用作于緩存的一種技術,并且redis存儲的方式是以key-value的形式。redis是如今網際網路技術架構中,使用最廣泛的緩存,在工作中常常會使用到。redis也是中進階後端工程師技術面試中,面試官最喜歡問的問題之一,是以作為java開發者,redis是我們必須要掌握的。

redis 是 nosql 資料庫領域的佼佼者,如果你需要了解 redis 是如何實作高并發、海量資料存儲的,那麼這份騰訊專家手敲《redis源碼日志筆記》将會是你的最佳選擇。

騰訊專家手敲萬字《Redis源碼日志筆記》