本書(shū)是一本Redis的入門指導(dǎo)圖書(shū),以通俗易懂的方式介紹了Redis基礎(chǔ)與實(shí)踐方面的知識(shí),包括歷史與特性,在開(kāi)發(fā)環(huán)境和生產(chǎn)環(huán)境中部署運(yùn)行Redis,數(shù)據(jù)類型與命令,使用Redis實(shí)現(xiàn)事務(wù)、排序、消息通知、管道、Redis存儲(chǔ)空間的優(yōu)化,持久化等內(nèi)容,并采用任務(wù)驅(qū)動(dòng)的方式介紹了PHP、Ruby、Python和Node.js這4種編程語(yǔ)言的Redis客戶端庫(kù)的使用方法。
本書(shū)的目標(biāo)讀者不僅包括Redis新手,還包括已經(jīng)掌握Redis使用方法的讀者。對(duì)新手而言,本書(shū)的內(nèi)容由淺入深且緊貼實(shí)踐,讓讀者能夠即學(xué)即用;對(duì)于已經(jīng)了解Redis的讀者,通過(guò)本書(shū)的大量實(shí)例以及細(xì)節(jié)介紹,也能發(fā)現(xiàn)很多新的技巧。
李子驊(Luin),畢業(yè)于北京航空航天大學(xué),目前就職于Fallacy Labs公司,曾先后于阿里巴巴、街旁網(wǎng)任職,也擔(dān)任過(guò)石墨文檔技術(shù)總監(jiān)。
第 1章 簡(jiǎn)介 1
1.1 歷史與發(fā)展 1
1.2 特性 2
1.2.1 存儲(chǔ)結(jié)構(gòu) 2
1.2.2 內(nèi)存存儲(chǔ)與持久化 3
1.2.3 功能豐富 4
1.2.4 簡(jiǎn)單穩(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 啟動(dòng)和停止Redis 10
2.2.1 啟動(dòng)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ù)庫(kù) 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 錯(cuò)誤處理 73
4.1.3 WATCH命令 74
4.2 過(guò)期時(shí)間 76
4.2.1 命令 76
4.2.2 實(shí)現(xiàn)訪問(wèn)頻率限制之一 79
4.2.3 實(shí)現(xiàn)訪問(wè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)先級(jí)隊(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 精簡(jiǎn)鍵名和鍵值 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 簡(jiǎn)便用法 113
5.1.4 實(shí)踐:用戶注冊(cè)登錄功能 114
5.2 Ruby與Redis 118
5.2.1 安裝 119
5.2.2 使用方法 119
5.2.3 簡(jiǎn)便用法 119
5.2.4 實(shí)踐:自動(dòng)完成 120
5.3 Python與Redis 123
5.3.1 安裝 123
5.3.2 使用方法 123
5.3.3 簡(jiǎn)便用法 123
5.3.4 實(shí)踐:在線的好友 124
5.4 Node.js與Redis 129
5.4.1 安裝 129
5.4.2 使用方法 129
5.4.3 簡(jiǎn)便用法 131
5.4.4 實(shí)踐:IP地址查詢 132
第6章 腳本 137
6.1 概覽 137
6.1.1 腳本 138
6.1.2 實(shí)例:訪問(wèn)頻率限制 138
6.2 Lua語(yǔ)言 139
6.2.1 Lua語(yǔ)法 140
6.2.2 標(biāo)準(zhǔn)庫(kù) 149
6.2.3 cjson庫(kù)和cmsgpack庫(kù) 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í)行時(shí)間 160
第7章 持久化 163
7.1 RDB方式 163
7.1.1 根據(jù)配置規(guī)則進(jìn)行自動(dòng)
快照 164
7.1.2 執(zhí)行SAVE或BGSAVE
命令 164
7.1.3 執(zhí)行FLUSHALL命令 165
7.1.4 執(zhí)行復(fù)制時(shí) 165
7.1.5 快照原理 165
7.2 AOF方式 166
7.2.1 開(kāi)啟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ù)庫(kù)持久化 177
8.1.6 無(wú)硬盤復(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 獲取與插槽對(duì)應(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ù)庫(kù)密碼 200
9.1.3 命名命令 202
9.2 通信協(xié)議 202
9.2.1 簡(jiǎn)單協(xié)議 202
9.2.2 統(tǒng)一請(qǐ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