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