《從零開始學Redis》是2019年4月出版的圖書,作者是高洪濤、劉河飛。
基本信息,內容簡介,目錄,
基本信息
從零開始學Redis
作譯者:高洪濤,劉河飛
出版時間:2019-04千 字 數:634版次:01-01頁 數:396
開本:16開裝幀:I S B N :9787121363115
內容簡介
Redis資料庫是目前熱門的資料庫,擁有巨大的用戶量。本書主要分為三個階段講解Redis資料庫。第一部分Redis初始篇,詳細介紹了Redis的數據類型、以及Redis的大部分命令並結合實際操作進行了演示。第二部分Redis進階篇,深入的講解了Redis的客戶端、伺服器端、數據結構的底層、以及Redis的排序、事務、持久化、集群等相關功能,同時講解了它的其他高級功能,比如慢日誌查詢、流水線、地理位置、點陣圖等,並結合實際操作,步步演示。第三部分Redis實戰篇,分別介紹了Java、SpringBoot、Python來操作Redis的實例,幫助讀者更好的學習Redis。通過閱讀本書,讀者可以快速掌握Redis的相關命令及功能用法,並結合實戰學習,可以熟練套用於實際的生產開發中。 本書面向大多數軟體開發者,比如Redis初學者或者具有相關後台開發經驗的開發者。
目錄
第一部分 Redis初始篇
第1章 初識NoSQL2
1.1 什麼是NoSQL2
1.2 NoSQL與傳統關係型資料庫的比較3
1.3 在什麼套用場景下使用NoSQL4
1.4 NoSQL的數據模型5
1.5 NoSQL資料庫的分類6
1.5.1 NoSQL資料庫分類簡介6
1.5.2 各類NoSQL資料庫的比較6
第2章 認識Redis8
2.1 Redis簡介8
2.1.1 Redis的由來8
2.1.2 什麼是Redis8
2.1.3 Redis的特性8
2.1.4 Redis的使用場景9
2.2 搭建Redis環境10
2.2.1 在Window環境下搭建10
2.2.2 在Linux環境下搭建13
2.3 Redis客戶端14
2.3.1 命令行客戶端14
2.3.2 可視化客戶端15
2.3.3 編程客戶端17
2.4 Redis的啟動方式18
2.4.1 在Window環境下的啟動方式18
2.4.2 在Linux環境下的啟動方式19
第3章 Redis數據類型21
3.1 Redis數據類型之字元串(String)命令21
3.1.1 設定鍵值對22
3.1.2 獲取鍵值對24
3.1.3 鍵值對的偏移量26
3.1.4 設定鍵的生存時間26
3.1.5 鍵值對的值操作27
3.1.6 鍵值對的計算29
3.1.7 鍵值對的值增量31
3.2 Redis數據類型之哈希(Hash)命令34
3.2.1 設定哈希表域的值34
3.2.2 獲取哈希表中的域和值36
3.2.3 哈希表統計38
3.2.4 為哈希表中的域加上增量值39
3.2.5 刪除哈希表中的域40
3.3 Redis數據類型之列表(List)命令41
3.3.1 向列表中插入值41
3.3.2 獲取列表元素44
3.3.3 刪除列表元素46
3.3.4 移動列表50
3.3.5 列表模式52
3.4 Redis數據類型之集合(Set)命令53
3.4.1 向集合中添加元素53
3.4.2 獲取集合元素54
3.4.3 集合運算57
3.4.4 刪除集合元素60
3.5 Redis數據類型之有序集合(Sorted Set)命令61
3.5.1 添加元素到有序集合中62
3.5.2 獲取有序集合元素63
3.5.3 有序集合排名69
3.5.4 有序集合運算71
3.5.5 刪除有序集合元素72
第4章 Redis必備命令76
4.1 鍵(key)命令76
4.1.1 查詢鍵76
4.1.2 修改鍵79
4.1.3 鍵的序列化81
4.1.4 鍵的生存時間82
4.1.5 鍵值對操作85
4.1.6 刪除鍵89
4.2 HyperLogLog命令90
4.2.1 添加鍵值對到HyperLogLog中90
4.2.2 獲取HyperLogLog的基數91
4.2.3 合併HyperLogLog92
4.3 腳本命令92
4.3.1 快取中的Lua腳本92
4.3.2 對Lua腳本求值93
4.3.3 殺死或清除Lua腳本95
4.4 連線命令96
4.4.1 解鎖密碼96
4.4.2 斷開客戶端與伺服器的連線97
4.4.3 查看伺服器的運行狀態97
4.4.4 輸出列印訊息97
4.4.5 切換資料庫98
4.5 伺服器命令98
4.5.1 管理客戶端98
4.5.2 查看Redis伺服器信息101
4.5.3 修改並查看相關配置108
4.5.4 數據持久化111
4.5.5 實現主從服務112
4.5.6 伺服器管理114
第5章 Redis資料庫116
5.1 Redis資料庫切換116
5.2 Redis資料庫中的鍵操作117
5.2.1 添加鍵118
5.2.2 修改鍵118
5.2.3 刪除鍵120
5.2.4 取鍵值121
5.3 Redis資料庫通知121
5.3.1 資料庫通知分類 122
5.3.2 資料庫通知的實現原理 124
第二部分 Redis進階篇
第6章 Redis客戶端與伺服器 126
6.1 Redis客戶端 126
6.1.1 客戶端的名字、套接字、標誌和時間屬性 126
6.1.2 客戶端緩衝區 129
6.1.3 客戶端的authenticated屬性 131
6.1.4 客戶端的argv和argc屬性 131
6.1.5 關閉客戶端 132
6.2 Redis伺服器 132
6.2.1 伺服器處理命令請求 132
6.2.2 伺服器傳送命令 133
6.2.3 伺服器執行命令 134
6.2.4 伺服器返回命令結果 135
6.3 伺服器函式 136
6.3.1 serverCron函式 136
6.3.2 trackOperationsPerSecond函式 137
6.3.3 sigtermHandler函式 137
6.3.4 clientsCron函式 138
6.3.5 databasesCron函式 138
6.4 伺服器屬性 138
6.4.1 cronloops屬性 138
6.4.2 rdb_child_pid與aof_child_pid屬性138
6.4.3 stat_peak_memory屬性139
6.4.4 lruclock屬性140
6.4.5 mstime與unixtime屬性141
6.4.6 aof_rewrite_scheduled屬性141
6.5 Redis伺服器的啟動過程141
6.5.1 伺服器狀態結構的初始化142
6.5.2 相關配置參數的載入142
6.5.3 伺服器數據結構的初始化142
6.5.4 資料庫狀態的處理143
6.5.5 執行伺服器的循環事件144
第7章 Redis底層數據結構145
7.1 Redis簡單動態字元串145
7.1.1 SDS的實現原理145
7.1.2 SDS API函式147
7.2 Redis鍊表148
7.2.1 鍊表的實現原理148
7.2.2 鍊表API函式150
7.3 Redis壓縮列表151
7.3.1 壓縮列表的實現原理151
7.3.2 壓縮列表API函式153
7.4 Redis快速列表154
7.4.1 快速列表的實現原理154
7.4.2 快速列表API函式156
7.5 Redis字典157
7.5.1 字典的實現原理157
7.5.2 字典API函式160
7.6 Redis整數集合161
7.6.1 整數集合的實現原理161
7.6.2 整數集合API函式163
7.7 Redis跳表164
7.7.1 跳表的實現原理164
7.7.2 跳表API函式166
7.8 Redis中的對象167
7.8.1 對象類型167
7.8.2 對象的編碼方式171
第8章 Redis排序174
8.1 SORT排序命令174
8.2 升序(ASC)與降序(DESC)176
8.3 BY參數的使用177
8.4 LIMIT參數的使用180
8.5 GET與STORE參數的使用181
8.6 多參數執行順序185
第9章 Redis事務187
9.1 Redis事務簡介187
9.2 Redis 事務的ACID特性188
9.2.1 事務的原子性188
9.2.2 事務的一致性190
9.2.3 事務的隔離性192
9.2.4 事務的持久性193
9.3 Redis事務處理194
9.3.1 事務的實現過程194
9.3.2 悲觀鎖和樂觀鎖197
9.3.3 事務的WATCH命令198
第10章 Redis訊息訂閱202
10.1 訊息訂閱發布概述202
10.2 訊息訂閱發布實現203
10.2.1 訊息訂閱發布模式命令203
10.2.2 訊息訂閱功能之訂閱頻道208
10.2.3 訊息訂閱功能之訂閱模式210
10.3 Redis訊息佇列211
10.3.1 訊息訂閱發布模式的原理211
10.3.2 訊息生產者/消費者模式的原理212
第11章 Redis持久化213
11.1 Redis持久化操作概述213
11.2 Redis持久化機制AOF214
11.2.1 AOF持久化的配置214
11.2.2 AOF持久化的實現215
11.2.3 AOF檔案重寫216
11.2.4 AOF檔案處理220
11.2.5 AOF持久化的優劣221
11.3 Redis持久化機制RDB222
11.3.1 RDB持久化222
11.3.2 RDB檔案224
11.3.3 RDB檔案的創建與載入226
11.3.4 創建與載入RDB檔案時伺服器的狀態228
11.3.5 RDB持久化的配置228
11.3.6 RDB持久化的優劣229
11.4 AOF持久化與RDB持久化抉擇230
第12章 Redis集群231
12.1 Redis集群的主從複製模式231
12.1.1 什麼是主從複製231
12.1.2 主從複製配置234
12.1.3 複製功能的原理237
12.1.4 複製功能的實現步驟242
12.1.5 Redis讀寫分離245
12.1.6 Redis心跳機制246
12.2 Redis集群的高可用哨兵模式247
12.2.1 什麼是高可用哨兵模式248
12.2.2 哨兵模式的配置249
12.2.3 Sentinel的配置選項255
12.2.4 哨兵模式的實現原理256
12.2.5 選擇“合適”的slave節點作為master節點263
12.2.6 Sentinel的下線狀態266
12.2.7 Sentinel內部的定時任務267
12.3 Redis集群搭建268
12.3.1 什麼是Redis集群268
12.3.2 集群中的節點和槽269
12.3.3 集群搭建274
12.3.4 使用Redis集群285
12.3.5 集群中的錯誤287
12.3.6 集群的訊息289
第13章 Redis高級功能291
13.1 慢查詢291
13.1.1 配置慢查詢291
13.1.2 慢查詢的生命周期293
13.1.3 慢查詢日誌294
13.1.4 慢查詢命令296
13.2 流水線297
13.2.1 什麼是Pipeline技術297
13.2.2 如何使用Pipeline技術298
13.3 地理位置的套用298
13.3.1 存儲地理位置298
13.3.2 獲取地理位置的經緯度信息299
13.3.3 計算兩地間的距離300
13.3.4 獲取指定範圍內的位置信息300
13.4 點陣圖302
13.4.1 二進制位數組302
13.4.2 位數組的表示304
13.4.3 位數組的實現305
第三部分 Redis實戰篇
第14章 Java操作Redis310
14.1 Java客戶端Jedis310
14.1.1 Jedis的獲取310
14.1.2 Jedis的使用311
14.1.3 Jedis常用API311
14.1.4 Jedis事務313
14.1.5 Jedis主從複製316
14.1.6 Jedis的連線池318
14.2 Java操作Redis數據類型321
14.2.1 Java操作Redis字元串類型322
14.2.2 Java操作Redis列表類型323
14.2.3 Java操作Redis集合類型325
14.2.4 Java操作Redis哈希表類型326
14.2.5 Java操作Redis有序集合類型328
14.3 Java操作Redis實現排行榜329
14.4 Java操作Redis實現秒殺功能332
14.5 Java操作Redis實現訊息佇列335
14.6 Java操作Redis實現故障轉移338
第15章 SpringBoot操作Redis343
15.1 在SpringBoot中套用Redis343
15.1.1 Redis依賴配置343
15.1.2 Redis配置檔案344
15.2 SpringBoot連線Redis345
15.3 SpringBoot整合Redis實現快取352
第16章 Python操作Redis364
16.1 在Python中套用Redis364
16.1.1 在PyCharm中配置Redis364
16.1.2 Python連線Redis365
16.2 Python操作Redis數據類型367
16.2.1 Python操作Redis String類型367
16.2.2 Python操作Redis List類型370
16.2.3 Python操作Redis Set類型372
16.2.4 Python操作Redis Hash類型374
16.2.5 Python操作Redis SortedSet類型376
16.2.6 Python操作Redis的其他key378
16.3 Python操作Redis實現訊息訂閱發布380