REDIS深度歷險:核心原理與應(yīng)用實踐 版權(quán)信息
- ISBN:9787121350474
- 條形碼:9787121350474 ; 978-7-121-35047-4
- 裝幀:一般膠版紙
- 冊數(shù):暫無
- 重量:暫無
- 所屬分類:>>
REDIS深度歷險:核心原理與應(yīng)用實踐 本書特色
Redis 是互聯(lián)網(wǎng)技術(shù)領(lǐng)域使用*為廣泛的存儲中間件,以其超高的性能、完美的文檔、簡潔易懂的源碼和豐富的客戶端庫支持在開源中間件領(lǐng)域廣受好評。國內(nèi)外很多大型互聯(lián)網(wǎng)公司都在使用 Redis,比如 Twitter、暴雪娛樂、Github、StackOverflow、騰訊、阿里、*、華為、新浪微博等,很多中小型公司也都有應(yīng)用。也可以說,對 Redis 的了解和應(yīng)用實踐已成為當(dāng)下中高級后端開發(fā)者繞不開的**技能。本書在內(nèi)容結(jié)構(gòu)上分為 Redis 基礎(chǔ)應(yīng)用、原理、集群、拓展學(xué)習(xí)和源碼分析 5大塊。 Redis 基礎(chǔ)應(yīng)用:占據(jù)篇幅*長,這也是對讀者*有價值的內(nèi)容,可以直接應(yīng)用到實際工作中。 原理和集群版塊:適合對技術(shù)有著極致追求的開發(fā)者,他們希望透過簡單的技術(shù)表面看到精致的底層世界。 拓展學(xué)習(xí)版塊:作為*核心內(nèi)容之外的補(bǔ)充部分,主要用于進(jìn)一步擴(kuò)展技術(shù)視野或者夯實基礎(chǔ),便于進(jìn)階學(xué)習(xí),作者會盡可能的在拓展篇持續(xù)擴(kuò)充更多知識點(diǎn)。 源碼分析版塊:主要滿足高階用戶深入探索 Redis 內(nèi)部實現(xiàn)的強(qiáng)烈渴望,這類讀者堅信讀懂源碼才是技術(shù)實力的真正體現(xiàn)。
REDIS深度歷險:核心原理與應(yīng)用實踐 內(nèi)容簡介
Redis 是互聯(lián)網(wǎng)技術(shù)架構(gòu)在存儲系統(tǒng)中使用得很為廣泛的中間件,也是中不錯后端工程師技術(shù)面試中面試官很喜歡問的工程技能之一,特別是那些很好的互聯(lián)網(wǎng)公司,通常要求面試者不僅僅掌握 Redis 基礎(chǔ)用法,還要理解 Redis 內(nèi)部實現(xiàn)的細(xì)節(jié)原理!禦edis 深度歷險:核心原理與應(yīng)用實踐》作者老錢在使用 Redis 上積累了豐富的實戰(zhàn)經(jīng)驗,希望幫助更多后端開發(fā)者更快、更深入地掌握 Redis 技能。 《Redis 深度歷險:核心原理與應(yīng)用實踐》分為基礎(chǔ)和應(yīng)用篇、原理篇、集群篇、拓展篇、源碼篇共 5 大塊內(nèi)容。基礎(chǔ)和應(yīng)用篇講解對讀者來說很有價值的內(nèi)容,可以直接應(yīng)用到實際工作中;原理篇、集群篇讓開發(fā)者透過簡單的技術(shù)表面看到精致的底層世界;拓展篇幫助讀者拓展技術(shù)視野和夯實基礎(chǔ),便于進(jìn)階學(xué)習(xí);源碼篇讓高階的讀者能夠讀懂源碼,掌握核心技術(shù)實力。 《Redis 深度歷險:核心原理與應(yīng)用實踐》適合以下人群閱讀:有 Redis 基礎(chǔ),渴望深度掌握 Redis 技術(shù)原理的中不錯后端開發(fā)者;渴望成功進(jìn)入大型互聯(lián)網(wǎng)企業(yè)研發(fā)部的中不錯后端開發(fā)者;需要支撐公司 Redis 中間件運(yùn)維工作的初中級運(yùn)維工程師;對 Redis 中間件技術(shù)好奇的中不錯前端技術(shù)研究者。
REDIS深度歷險:核心原理與應(yīng)用實踐 目錄
第1篇 基礎(chǔ)和應(yīng)用篇 / 1
1.1 授人以魚不如授人以漁 / 1
1.1.1 由 Redis 面試想到的 / 1
1.1.2 本書的內(nèi)容范圍 / 2
1.1.3 Redis 可以做什么 / 3
1.1.4 小結(jié) / 3
1.1.5 擴(kuò)展閱讀 / 4
1.2 萬丈高樓平地起——Redis 基礎(chǔ)數(shù)據(jù)結(jié)構(gòu) / 4
1.2.1 Redis 的安裝 / 5
1.2.2 5 種基礎(chǔ)數(shù)據(jù)結(jié)構(gòu) / 6
1.2.3 容器型數(shù)據(jù)結(jié)構(gòu)的通用規(guī)則 / 17
1.2.4 過期時間 / 17
1.2.5 思考&作業(yè) / 17
1.3 千帆競發(fā)——分布式鎖 / 18
1.3.1 分布式鎖的奧義 / 18
1.3.2 超時問題 / 20
1.3.3 可重入性 / 21
1.3.4 思考&作業(yè) / 24
1.4 緩兵之計——延時隊列 / 24
1.4.1 異步消息隊列 / 24
1.4.2 隊列空了怎么辦 / 26
1.4.3 阻塞讀 / 26
1.4.4 空閑連接自動斷開 / 26
1.4.5 鎖沖突處理 / 27
1.4.6 延時隊列的實現(xiàn) / 27
1.4.7 進(jìn)一步優(yōu)化 / 30
1.4.8 思考&作業(yè) / 31
1.5 節(jié)衣縮食——位圖 / 31
1.5.1 基本用法 / 31
1.5.2 統(tǒng)計和查找 / 34
1.5.3 魔術(shù)指令 bitfield / 35
1.5.4 思考&作業(yè) / 38
1.6 四兩撥千斤——HyperLogLog / 38
1.6.1 使用方法 / 39
1.6.2 pfadd 中的 pf 是什么意思 / 41
1.6.3 pfmerge 適合的場合 / 42
1.6.4 注意事項 / 42
1.6.5 HyperLogLog 實現(xiàn)原理 / 42
1.6.6 pf 的內(nèi)存占用為什么是 12KB / 49
1.6.7 思考&作業(yè) / 50
1.7 層巒疊嶂——布隆過濾器 / 50
1.7.1 布隆過濾器是什么 / 51
1.7.2 Redis 中的布隆過濾器 / 51
1.7.3 布隆過濾器的基本用法 / 52
1.7.4 注意事項 / 59
1.7.5 布隆過濾器的原理 / 60
1.7.6 空間占用估計 / 61
1.7.7 實際元素超出時,誤判率會怎樣變化 / 62
1.7.8 用不上 Redis 4.0 怎么辦 / 63
1.7.9 布隆過濾器的其他應(yīng)用 / 63
1.8 斷尾求生——簡單限流 / 64
1.8.1 如何使用 Redis 來實現(xiàn)簡單限流策略 / 64
1.8.2 解決方案 / 65
1.8.3 小結(jié) / 67
1.9 一毛不拔——漏斗限流 / 68
1.9.1 Redis-Cell / 71
1.9.2 思考&作業(yè) / 72
1.9.3 擴(kuò)展閱讀:Redis-Cell 作者介紹 / 72
1.10 近水樓臺——GeoHash / 73
1.10.1 用數(shù)據(jù)庫來算附近的人 / 73
1.10.2 GeoHash 算法 / 74
1.10.3 Geo 指令的基本用法 / 75
1.10.4 注意事項 / 78
1.11 大海撈針——scan / 79
1.11.1 scan 基本用法 / 80
1.11.2 字典的結(jié)構(gòu) / 82
1.11.3 scan 遍歷順序 / 82
1.11.4 字典擴(kuò)容 / 83
1.11.5 對比擴(kuò)容、縮容前后的遍歷順序 / 84
1.11.6 漸進(jìn)式 rehash / 85
1.11.7 更多的 scan 指令 / 85
1.11.8 大 key 掃描 / 85
第2 篇 原理篇 / 87
2.1 鞭辟入里——線程 IO 模型 / 87
2.1.1 非阻塞 IO / 87
2.1.2 事件輪詢 (多路復(fù)用) / 88
2.1.3 指令隊列 / 90
2.1.4 響應(yīng)隊列 / 90
2.1.5 定時任務(wù) / 90
2.1.6 擴(kuò)展閱讀 / 90
2.2 交頭接耳——通信協(xié)議 / 90
2.2.1 RESP / 91
2.2.2 客戶端→服務(wù)器 / 92
2.2.3 服務(wù)器→客戶端 / 92
2.2.4 小結(jié) / 95
2.2.5 擴(kuò)展閱讀 / 95
2.3 未雨綢繆——持久化 / 95
2.3.1 快照原理 / 96
2.3.2 fork(多進(jìn)程) / 96
2.3.3 AOF 原理 / 97
2.3.4 AOF 重寫 / 98
2.3.5 fsync / 98
2.3.6 運(yùn)維 / 98
2.3.7 Redis 4.0 混合持久化 / 99
2.3.8 思考&作業(yè) / 100
2.4 雷厲風(fēng)行——管道 / 100
2.4.1 Redis 的消息交互 / 100
2.4.2 管道壓力測試 / 101
2.4.3 深入理解管道本質(zhì) / 102
2.4.4 小結(jié) / 104
2.5 同舟共濟(jì)——事務(wù) / 104
2.5.1 Redis 事務(wù)的基本用法 / 104
2.5.2 原子性 / 105
2.5.3 discard(丟棄) / 106
2.5.4 優(yōu)化 / 106
2.5.5 watch / 107
2.5.6 注意事項 / 108
2.5.7 思考&作業(yè) / 110
2.6 小道消息——PubSub / 110
2.6.1 消息多播 / 110
2.6.2 PubSub / 111
2.6.3 模式訂閱 / 113
2.6.4 消息結(jié)構(gòu) / 114
2.6.5 PubSub 的缺點(diǎn) / 115
2.6.6 補(bǔ)充 / 115
2.7 開源節(jié)流——小對象壓縮 / 115
2.7.1 32bit VS 64bit / 116
2.7.2 小對象壓縮存儲(ziplist) / 116
2.7.3 內(nèi)存回收機(jī)制 / 120
2.7.4 內(nèi)存分配算法 / 120
第3 篇 集群篇 / 122
3.1 有備無患——主從同步 / 122
3.1.1 CAP 原理 / 122
3.1.2 *終一致 / 123
3.1.3 主從同步與從從同步 / 123
3.1.4 增量同步 / 124
3.1.5 快照同步 / 124
3.1.6 增加從節(jié)點(diǎn) / 125
3.1.7 無盤復(fù)制 / 125
3.1.8 wait 指令 / 125
3.1.9 小結(jié) / 126
3.2 李代桃僵——Sentinel / 126
3.2.1 消息丟失 / 128
3.2.2 Sentinel 基本用法 / 128
3.2.3 思考&作業(yè) / 129
3.3 分而治之——Codis / 130
3.3.1 Codis 分片原理 / 131
3.3.2 不同的 Codis 實例之間槽位關(guān)系如何同步 / 132
3.3.3 擴(kuò)容 / 132
3.3.4 自動均衡 / 133
3.3.5 Codis 的代價 / 133
3.3.6 Codis 的優(yōu)點(diǎn) / 134
3.3.7 mget 指令的操作過程 / 134
3.3.8 架構(gòu)變遷 / 135
3.3.9 Codis 的尷尬 / 135
3.3.10 Codis 的后臺管理 / 136
3.3.11 思考&作業(yè) / 136
3.4 眾志成城——Cluster / 137
3.4.1 槽位定位算法 / 138
3.4.2 跳轉(zhuǎn) / 138
3.4.3 遷移 / 138
3.4.4 容錯 / 140
3.4.5 網(wǎng)絡(luò)抖動 / 140
3.4.6 可能下線(PFAIL)與確定下線(Fail) / 141
3.4.7 Cluster 基本用法 / 141
3.4.8 槽位遷移感知 / 142
3.4.9 集群變更感知 / 143
3.4.10 思考&作業(yè) / 143
第4 篇 拓展篇 / 144
4.1 耳聽八方——Stream / 144
4.1.1 消息 ID / 145
4.1.2 消息內(nèi)容 / 145
4.1.3 增刪改查 / 145
4.1.4 獨(dú)立消費(fèi) / 147
4.1.5 創(chuàng)建消費(fèi)組 / 148
4.1.6 消費(fèi) / 150
4.1.7 Stream 消息太多怎么辦 / 152
4.1.8 消息如果忘記 ack 會怎樣 / 153
4.1.9 PEL 如何避免消息丟失 / 153
4.1.10 Stream 的高可用 / 153
4.1.11 分區(qū) Partition / 154
4.1.12 小結(jié) / 154
4.2 無所不知——Info 指令 / 154
4.2.1 Redis 每秒執(zhí)行多少次指令 / 155
4.2.2 Redis 連接了多少客戶端 / 156
4.2.3 Redis 內(nèi)存占用多大 / 156
4.2.4 復(fù)制積壓緩沖區(qū)多大 / 157
4.2.5 思考&作業(yè) / 158
4.3 拾遺補(bǔ)漏——再談分布式鎖 / 158
4.3.1 Redlock 算法 / 158
4.3.2 Redlock 使用場景 / 159
4.3.3 擴(kuò)展閱讀:redlock-py 的作者 / 160
4.4 朝生暮死——過期策略 / 160
4.4.1 過期的 key 集合 / 160
4.4.2 定時掃描策略 / 160
4.4.3 從節(jié)點(diǎn)的過期策略 / 161
4.5 優(yōu)勝劣汰——LRU / 162
4.5.1 LRU 算法 / 163
4.5.2 近似 LRU 算法 / 164
4.5.3 思考&作業(yè) / 165
4.6 平波緩進(jìn)——懶惰刪除 / 165
4.6.1 Redis 為什么使用懶惰刪除 / 165
4.6.2 flush / 166
4.6.3 異步隊列 / 166
4.6.4 AOF Sync 也很慢 / 166
4.6.5 更多異步刪除點(diǎn) / 166
4.7 妙手仁心——優(yōu)雅地使用 Jedis / 167
4.7.1 重試 / 171
4.7.2 思考&作業(yè) / 172
4.8 居安思危——保護(hù) Redis / 172
4.8.1 指令安全 / 172
4.8.2 端口安全 / 173
4.8.3 Lua 腳本安全 / 174
4.8.4 SSL 代理 / 174
4.8.5 小結(jié) / 174
4.9 隔墻有耳——Redis 安全通信 / 175
4.9.1 spiped 原理 / 176
4.9.2 spiped 使用入門 / 176
4.9.3 思考&作業(yè) / 179
第5 篇 源碼篇 / 180
5.1 絲分縷析——探索“字符串”內(nèi)部 / 180
5.1.1 embstr VS raw / 181
5.1.2 擴(kuò)容策略 / 184
5.1.3 思考&作業(yè) / 184
5.2 循序漸進(jìn)——探索“字典”內(nèi)部 / 184
5.2.1 dict 內(nèi)部結(jié)構(gòu) / 184
5.2.2 漸進(jìn)式 rehash / 186
5.2.3 查找過程 / 187
5.2.4 hash 函數(shù) / 188
5.2.5 hash 攻擊 / 188
5.2.6 擴(kuò)容條件 / 188
5.2.7 縮容條件 / 189
5.2.8 set 的結(jié)構(gòu) / 189
5.2.9 思考&作業(yè) / 189
5.3 挨肩迭背——探索“壓縮列表”內(nèi)部 / 190
5.3.1 增加元素 / 192
5.3.2 級聯(lián)更新 / 192
5.3.3 intset 小整數(shù)集合 / 194
5.3.4 思考&作業(yè) / 195
5.4 風(fēng)馳電掣——探索“快速列表”內(nèi)部 / 195
5.4.1 每個 ziplist 存多少元素 / 197
5.4.2 壓縮深度 / 198
5.5 凌波微步——探索“跳躍列表”內(nèi)部 / 198
5.5.1 基本結(jié)構(gòu) / 199
5.5.2 查找過程 / 199
5.5.3 隨機(jī)層數(shù) / 200
5.5.4 插入過程 / 201
5.5.5 刪除過程 / 202
5.5.6 更新過程 / 203
5.5.7 如果 score 值都一樣呢 / 203
5.5.8 元素排名是怎么算出來的 / 203
5.5.9 思考&作業(yè) / 204
5.5.10 題外話 / 204
5.6 破舊立新——探索“緊湊列表”內(nèi)部 / 205
5.6.1 級聯(lián)更新 / 207
5.6.2 取代 ziplist 尚需時日 / 207
5.6.3 思考&作業(yè) / 207
5.7 金枝玉葉——探索“基數(shù)樹”內(nèi)部 / 207
5.7.1 應(yīng)用 / 208
5.7.2 結(jié)構(gòu) / 210
5.7.3 思考&作業(yè) / 213
5.8 精益求精——LFU VS LRU / 213
5.8.1 Redis 對象的熱度 / 213
5.8.2 LRU 模式 / 213
5.8.3 LFU 模式 / 214
5.8.4 為什么 Redis 要緩存系統(tǒng)時間戳 / 217
5.8.5 Redis 為什么在獲取 lruclock 時使用原子操作 / 217
5.8.6 如何打開 LFU 模式 / 218
5.8.7 思考&作業(yè) / 218
5.9 如履薄冰——懶惰刪除的巨大犧牲 / 218
5.9.1 懶惰刪除的*初實現(xiàn)不是異步線程 / 219
5.9.2 異步線程方案其實也相當(dāng)復(fù)雜 / 219
5.9.3 異步刪除的實現(xiàn) / 221
5.9.4 隊列安全 / 224
5.9.5 思考&作業(yè) / 225
5.10 跋山涉水——深入字典遍歷 / 225
5.10.1 一邊遍歷一邊修改 / 226
5.10.2 重復(fù)遍歷的難題 / 227
5.10.3 迭代器的結(jié)構(gòu) / 227
5.10.4 迭代過程 / 229
5.10.5 迭代器的選擇 / 231
5.10.6 思考&作業(yè) / 232
REDIS深度歷險:核心原理與應(yīng)用實踐 相關(guān)資料
Redis 本身的設(shè)計頗具特色,作為數(shù)據(jù)庫從業(yè)者,我從中獲益匪淺。本書是我見過的內(nèi)容相對全面、講解極為生動的 Redis 實踐指導(dǎo)書,其中有大量直觀的插圖和實例。區(qū)別于市面上大量較為淺顯介紹 Redis 內(nèi)容的作品,本書對 Redis 原理的介紹深入淺出、循序漸進(jìn),章節(jié)安排條理清晰,非常適合中高級后端開發(fā)者作為參考書,入門學(xué)習(xí)和進(jìn)階學(xué)習(xí) Redis 應(yīng)用。
——螞蟻金服 OceanBase 數(shù)據(jù)庫高級技術(shù)專家 席華峰
Redis 作為互聯(lián)網(wǎng)存儲系統(tǒng)中使用極為廣泛的中間件,由于其純內(nèi)存訪問的特性,有著極高的存取性能和豐富的分布式數(shù)據(jù)結(jié)構(gòu)。本書由淺入深,從 Redis 的基礎(chǔ)使用出發(fā),結(jié)合實際項目中遇到的諸多應(yīng)用場景,*后詳細(xì)講解集群環(huán)境,圖文并茂地對 Redis 的特性做了全面解析。強(qiáng)烈建議想要入門學(xué)習(xí)和進(jìn)階學(xué)習(xí) Redis、渴望通過 Redis 來解決實際問題的小伙伴們認(rèn)真閱讀。
——掌閱用戶中心技術(shù)團(tuán)隊 Leader 牛新龍
REDIS深度歷險:核心原理與應(yīng)用實踐 作者簡介
掌閱科技股份有限公司服務(wù)端技術(shù)專家;互聯(lián)網(wǎng)分布式高并發(fā)技術(shù)十年老兵,熟練使用 Java、Python、Golang 等多種計算機(jī)語言,開發(fā)過游戲,制作過網(wǎng)站,寫過消息推送系統(tǒng)和 MySQL 中間件,實現(xiàn)過開源的 ORM 框架、Web 框架、RPC 框架等。自媒體公眾號"碼洞”運(yùn)營者。
- >
自卑與超越
- >
唐代進(jìn)士錄
- >
羅庸西南聯(lián)大授課錄
- >
小考拉的故事-套裝共3冊
- >
大紅狗在馬戲團(tuán)-大紅狗克里弗-助人
- >
經(jīng)典常談
- >
伯納黛特,你要去哪(2021新版)
- >
李白與唐代文化