從零開始學Redis( 簡體 字) | |
作者:高洪濤,劉河飛 | 類別:1. -> 資料庫 -> Redis |
出版社:電子工業出版社 | 3dWoo書號: 51080 詢問書籍請說出此書號! 有庫存 NT售價: 445 元 |
出版日:4/1/2019 | |
頁數:396 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787121363115 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第一部分 Redis初始篇
第1章 初識NoSQL 2 1.1 什么是NoSQL 2 1.2 NoSQL與傳統關系型數據庫的比較 3 1.3 在什么應用場景下使用NoSQL 4 1.4 NoSQL的數據模型 5 1.5 NoSQL數據庫的分類 6 1.5.1 NoSQL數據庫分類簡介 6 1.5.2 各類NoSQL數據庫的比較 6 第2章 認識Redis 8 2.1 Redis簡介 8 2.1.1 Redis的由來 8 2.1.2 什么是Redis 8 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 合并HyperLogLog 92 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持久化機制AOF 214 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持久化機制RDB 222 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操作Redis 310 14.1 Java客戶端Jedis 310 14.1.1 Jedis的獲取 310 14.1.2 Jedis的使用 311 14.1.3 Jedis常用API 311 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操作Redis 343 15.1 在SpringBoot中應用Redis 343 15.1.1 Redis依賴配置 343 15.1.2 Redis配置文件 344 15.2 SpringBoot連接Redis 345 15.3 SpringBoot整合Redis實現緩存 352 第16章 Python操作Redis 364 16.1 在Python中應用Redis 364 16.1.1 在PyCharm中配置Redis 364 16.1.2 Python連接Redis 365 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的其他key 378 16.3 Python操作Redis實現消息訂閱發布 380 Redis數據庫是目前熱門的數據庫,擁有巨大的用戶量。本書主要分為三個階段講解Redis數據庫。第一部分Redis初始篇,詳細介紹了Redis的數據類型、以及Redis的大部分命令并結合實際操作進行了演示。第二部分Redis進階篇,深入的講解了Redis的客戶端、服務器端、數據結構的底層、以及Redis的排序、事務、持久化、集群等相關功能,同時講解了它的其他高級功能,比如慢日志查詢、流水線、地理位置、位圖等,并結合實際操作,步步演示。第三部分Redis實戰篇,分別介紹了Java、SpringBoot、Python來操作Redis的實例,幫助讀者更好的學習Redis。通過閱讀本書,讀者可以快速掌握Redis的相關命令及功能用法,并結合實戰學習,可以熟練應用于實際的生產開發中。 本書面向大多數軟件開發者,比如Redis初學者或者具有相關后臺開發經驗的開發者。
2016年10月,在工作的過程中我偶然接觸到Redis,便開始自學,從學習Redis的安裝,到熟悉它的數據類型及相關命令,再到它的實際應用。在企業工作的這段時間里,我也時常用到Redis做緩存系統,實現高并發的存儲與讀/寫,以及Redis相關的高級功能,覺得非常實用。經過不斷整理與總結,2018年我決定寫本書,與諸位愛好Redis并能實際應用Redis的讀者進行分享。
有所得,必有所失。通常我白天正常上班,晚上或周末開始撰寫本書。感謝堅持不懈的自己,多少個日夜的堅持,才換來本書的完稿。在得到的同時,我也失去了許多。為了完成本書的編寫,我放棄了大量的休息時間,也很少鍛煉身體,以致常常生病,同時變成了一個“宅男”,缺少了與人交流溝通的機會。一句話總結就是:沉迷寫書,日漸消瘦。 在寫作本書的過程中,我深刻地體會到:做事之所以會半途而廢,往往不是因為難度較大,而是因為覺得成功離我們較遠。確切地說,我們不是因為失敗而放棄,而是因為倦怠而失敗。在人生的旅途中,我們多思考一下,多堅持一下,同時也多鼓勵一下自己,一生中也許會少許多懊悔與惋惜,我們離成功也就會越來越近。在此,我希望閱讀本書的讀者堅持學習,不斷進步。累了,就休息一下,但是不要懈怠;迷茫了,就調整一下自己努力的方向,但是不要放棄努力。既然選擇了,就要堅持下去,相信未來的自己一定會感謝現在努力的自己。 夜已深,茶已涼,就不再多敘,望諸君謹記:學雖易,學好難,且學且珍惜。 到目前為止,Redis還在不斷更新,用戶量也在不斷擴大,這也足以說明Redis的強大之處。希望諸君學習愉快,技術更上一層樓。 本書內容簡介 全書分3部分。 第一部分(第1~5章)為Redis初始篇,首先介紹了對NoSQL的認識,然后介紹了Redis環境的搭建與啟動,以及它的相關客戶端,最后介紹了Redis的數據類型命令、必備命令及Redis數據庫的相關知識。 第二部分(第6~13章)為Redis進階篇,首先講解了Redis客戶端與服務器的相關屬性與函數,然后結合Redis的底層源碼深入講解了Redis的底層實現和相關的API函數,最后講解了Redis的相關功能,如排序、事務、消息訂閱、持久化、集群,以及其他高級功能,如慢查詢、流水線、地理位置、位圖等,旨在幫助讀者深入理解Redis,并掌握其精髓。 第三部分(第14~16章)為Redis實戰篇,這部分結合實際應用,講解了對Redis數據庫的操作,以Java語言、最流行的SpringBoot框架及Python語言為主,并提供了大量的實例代碼,旨在提高讀者的動手能力,幫助讀者真正掌握Redis數據庫。 本書的特點 本書以模塊化為主,從了解、熟悉Redis,到Redis的進階學習,最后結合實際應用,為讀者展示了Redis數據庫的使用。本書前面的章節詳細介紹了關于Redis的200多個命令,并結合實際操作為讀者演示;后面的章節結合相關的原理圖、流程圖,為讀者介紹了Redis的相關功能,如排序、事務、消息訂閱、持久化、集群,以及其他高級功能,如慢查詢、流水線、地理位置、位圖等。最后以實際應用為主,提供了Java、SpringBoot、Python操作Redis等相關實例。 致謝 首先,非常感謝張增強老師對我的肯定與支持,并給予我寬松的時間,讓我得以完成本書的編寫。其次,感謝堅持不懈的自己,在多少個黑夜與周末,我不斷地堅持,換來了此書的完稿。最后,感謝郭豪、閆凱峰等好友的幫助,在他們的支持下,我不斷地向前,不斷地進步著。 |