Redis 入門指南, 3/e
內容描述
本書是一本Redis的入門指導圖書,以通俗易懂的方式介紹了Redis基礎與實踐方面的知識,包括歷史與特性,在開發環境和生產環境中部署運行Redis,數據類型與命令,使用Redis實現事務、排序、消息通知、管道、Redis存儲空間的優化,持久化等內容,並採用“任務驅動”的方式介紹了PHP、Ruby、Python和Node.js這4種編程語言的Redis客戶端庫的使用方法。
本書的目標讀者不僅包括Redis新手,還包括已經掌握Redis使用方法的讀者。對新手而言,本書的內容由淺入深且緊貼實踐,讓讀者能夠即學即用;對於已經瞭解Redis的讀者,通過本書的大量實例以及細節介紹,也能發現很多新的技巧。
目錄大綱
第 1章 簡介 1
1.1 歷史與發展 1
1.2 特性 2
1.2.1 存儲結構 2
1.2.2 內存存儲與持久化 3
1.2.3 功能豐富 4
1.2.4 簡單穩定 4
第 2章 準備 7
2.1 安裝Redis 7
2.1.1 在POSIX中安裝 7
2.1.2 在macOS中安裝 8
2.1.3 在Windows中安裝 9
2.2 啟動和停止Redis 10
2.2.1 啟動Redis 11
2.2.2 停止Redis 13
2.3 Redis命令行客戶端 13
2.3.1 發送命令 13
2.3.2 命令返回值 14
2.4 配置 15
2.5 多數據庫 16
第3章 入門 19
3.1 熱身 19
3.2 字符串類型 21
3.2.1 介紹 22
3.2.2 命令 22
3.2.3 實踐 25
3.2.4 命令拾遺 27
3.3 哈希類型 32
3.3.1 介紹 32
3.3.2 命令 34
3.3.3 實踐 36
3.3.4 命令拾遺 38
3.4 列表類型 39
3.4.1 介紹 39
3.4.2 命令 40
3.4.3 實踐 43
3.4.4 命令拾遺 44
3.5 集合類型 46
3.5.1 介紹 47
3.5.2 命令 47
3.5.3 實踐 50
3.5.4 命令拾遺 52
3.6 有序集合類型 55
3.6.1 介紹 55
3.6.2 命令 56
3.6.3 實踐 59
3.6.4 命令拾遺 60
3.7 流類型 63
3.7.1 介紹 64
3.7.2 命令 65
3.7.3 實踐 67
3.7.4 命令拾遺 68
第4章 進階 71
4.1 事務 71
4.1.1 概述 72
4.1.2 錯誤處理 73
4.1.3 WATCH命令 74
4.2 過期時間 76
4.2.1 命令 76
4.2.2 實現訪問頻率限制之一 79
4.2.3 實現訪問頻率限制之二 80
4.2.4 實現緩存 80
4.3 排序 82
4.3.1 有序集合的集合操作 82
4.3.2 SORT命令 83
4.3.3 BY參數 84
4.3.4 GET參數 87
4.3.5 STORE參數 88
4.3.6 性能優化 89
4.4 消息通知 89
4.4.1 任務隊列 90
4.4.2 使用Redis實現任務隊列 91
4.4.3 優先級隊列 92
4.4.4 “發布/訂閱”模式 93
4.4.5 按照規則訂閱 94
4.4.6 強大的流 96
4.4.7 流與消費組 98
4.5 管道 101
4.6 節省空間 102
4.6.1 精簡鍵名和鍵值 103
4.6.2 內部編碼優化 103
第5章 實踐 111
5.1 PHP與Redis 111
5.1.1 安裝 111
5.1.2 使用方法 112
5.1.3 簡便用法 113
5.1.4 實踐:用戶註冊登錄功能 114
5.2 Ruby與Redis 118
5.2.1 安裝 119
5.2.2 使用方法 119
5.2.3 簡便用法 119
5.2.4 實踐:自動完成 120
5.3 Python與Redis 123
5.3.1 安裝 123
5.3.2 使用方法 123
5.3.3 簡便用法 123
5.3.4 實踐:在線的好友 124
5.4 Node. js與Redis 129
5.4.1 安裝 129
5.4.2 使用方法 129
5.4.3 簡便用法 131
5.4.4 實踐:IP地址查詢 132
第6章 腳本 137
6.1 概覽 137
6.1.1 腳本 138
6.1.2 實例:訪問頻率限制 138
6.2 Lua語言 139
6.2.1 Lua語法 140
6.2.2 標準庫 149
6.2.3 cjson庫和cmsgpack庫 152
6.3 Redis與Lua 153
6.3.1 在腳本中調用Redis命令 153
6.3.2 從腳本中返回值 153
6.3.3 腳本相關命令 154
6.3.4 應用實例 155
6.4 深入腳本 158
6.4.1 KEYS與ARGV 158
6.4.2 沙盒與隨機數 159
6.4.3 其他腳本相關命令 159
6.4.4 原子性和執行時間 160
第7章 持久化 163
7.1 RDB方式 163
7.1.1 根據配置規則進行自動快照 164
7.1.2 執行SAVE或BGSAVE命令 164
7.1.3 執行FLUSHALL命令 165
7.1.4 執行複制時 165
7.1.5 快照原理 165
7.2 AOF方式 166
7.2.1 開啟AOF 167
7.2.2 AOF的實現 167
7.2.3 同步硬盤數據 169
第8章 集群 171
8.1 複製 171
8.1.1 配置 172
8.1.2 原理 174
8.1.3 圖結構 176
8.1.4 讀寫分離與一致性 177
8.1.5 從數據庫持久化 177
8.1.6 無硬盤複製 177
8.1.7 增量複製 178
8.2 哨兵 179
8.2.1 什麼是哨兵 179
8.2.2 馬上上手 180
8.2.3 實現原理 183
8.2.4 哨兵的部署 186
8.3 集群 187
8.3.1 配置集群 187
8.3.2 節點的增加 191
8.3.3 插槽的分配 191
8.3.4 獲取與插槽對應的節點 196
8.3.5 故障恢復 197
第9章 管理 199
9.1 安全 199
9.1.1 可信的環境 199
9.1.2 數據庫密碼 200
9.1.3 命名命令 202
9.2 通信協議 202
9.2.1 簡單協議 202
9.2.2 統一請求協議 204
9.3 管理工具 205
9.3.1 redis-cli 205
9.3.2 Medis 206
9.3.3 phpRedisAdmin 208
9.3.4 Rdbtools 210
附錄A Redis命令屬性 211
A. 1 REDIS_CMD_WRITE 211
A. 2 REDIS_CMD_DENYOOM 213
A. 3 REDIS_CMD_NOSCRIPT 214
A. 4 REDIS_CMD_RANDOM 215
A. 5 REDIS_CMD_SORT_FOR_SCRIPT 215
A. 6 REDIS_CMD_LOADING 215
附錄B 配置參數索引 217
附錄C CRC16實現參考 219
作者介紹
李子驊(Luin),畢業於北京航空航天大學,目前就職於Fallacy Labs公司,曾先後於阿里巴巴、街旁網任職,也擔任過石墨文檔技術總監。