前 言
第1章 引言 1
1.1 Redis簡介 1
1.2 內容編排 3
1.3 目標讀者 4
1.4 預備工作 4
1.5 執行命令 5
1.6 配置服務器 6
1.7 示例代碼 7
1.8 版本說明 7
1.9 讀者服務網站 8
1.10 啓程 8
第一部分 數據結構與應用
第2章 字符串 10
2.1 SET:為字符串鍵設置值 11
2.1.1 改變覆蓋規則 12
2.1.2 其他信息 13
2.2 GET:獲取字符串鍵的值 13
2.3 GETSET:獲取舊值並設置新值 14
示例:緩存 14
示例:鎖 16
2.4 MSET:一次為多個字符串鍵設置值 18
2.5 MGET:一次獲取多個字符串鍵的值 19
2.6 MSETNX:隻在鍵不存在的情況下,一次為多個字符串鍵設置值 20
示例:存儲文章信息 20
2.7 STRLEN:獲取字符串值的字節長度 25
2.8 字符串值的索引 26
2.9 GETRANGE:獲取字符串值指定索引範圍上的內容 26
2.10 SETRANGE:對字符串值的指定索引範圍進行設置 27
2.10.1 自動擴展被修改的字符串 29
2.10.2 在值裏麵填充空字節 29
2.10.3 其他信息 30
示例:給文章存儲程序加上文章長度計數功能和文章預覽功能 31
2.11 APPEND:追加新內容到值的末尾 32
2.11.1 處理不存在的鍵 33
2.11.2 其他信息 33
示例:存儲日誌 34
2.12 使用字符串鍵存儲數字值 37
2.13 INCRBY、DECRBY:對整數值執行加法操作和減法操作 37
2.13.1 類型限製 38
2.13.2 處理不存在的鍵 39
2.13.3 其他信息 40
2.14 INCR、DECR:對整數值執行加1操作和減1操作 40
2.15 INCRBYFLOAT:對數字值執行浮點數加法操作 41
2.15.1 處理不存在的鍵 41
2.15.2 使用INCRBYFLOAT執行浮點數減法操作 41
2.15.3 INCRBYFLOAT與整數值 42
2.15.4 小數位長度限製 43
2.15.5 其他信息 43
示例:ID生成器 43
示例:計數器 44
示例:限速器 46
2.16 重點迴顧 48
第3章 散列 49
3.1 散列簡介 50
3.2 HSET:為字段設置值 51
3.2.1 使用新值覆蓋舊值 53
3.2.2 其他信息 53
3.3 HSETNX:隻在字段不存在的情況下為它設置值 53
3.4 HGET:獲取字段的值 54
3.4.1 處理不存在的字段或者不存在的散列 55
3.4.2 其他信息 55
示例:實現短網址生成程序 55
3.5 HINCRBY:對字段存儲的整數值執行加法或減法操作 58
3.5.1 執行減法操作 58
3.5.2 處理異常情況 59
3.5.3 其他信息 59
3.6 HINCRBYFLOAT:對字段存儲的數字值執行浮點數加法或減法操作 59
3.6.1 增量和字段值的類型限製 60
3.6.2 執行減法操作 60
3.6.3 其他信息 60
示例:使用散列鍵重新實現計數器 60
3.7 HSTRLEN:獲取字段值的字節長度 63
3.8 HEXISTS:檢查字段是否存在 63
3.9 HDEL:刪除字段 64
3.10 HLEN:獲取散列包含的字段數量 65
示例:實現用戶登錄會話 66
3.11 HMSET:一次為多個字段設置值 69
3.11.1 使用新值覆蓋舊值 69
3.11.2 其他信息 70
3.12 HMGET:一次獲取多個字段的值 70
3.13 HKEYS、HVALS、HGETALL:獲取所有字段、所有值、所有字段和值 71
3.13.1 字段在散列中的排列順序 72
3.13.2 其他信息 73
示例:存儲圖數據 73
示例:使用散列鍵重新實現文章存儲程序 77
3.14 散列與字符串 79
3.14.1 散列鍵的優點 80
3.14.2 字符串鍵的優點 81
3.14.3 字符串鍵和散列鍵的選擇 82
3.15 重點迴顧 82
第4章 列錶 83
4.1 LPUSH:將元素推入列錶左端 84
4.1.1 一次推入多個元素 84
4.1.2 其他信息 86
4.2 RPUSH:將元素推入列錶右端 86
4.2.1 一次推入多個元素 86
4.2.2 其他信息 88
4.3 LPUSHX、RPUSHX:隻對已存在的列錶執行推入操作 88
4.3.1 每次隻能推入單個元素 89
4.3.2 其他信息 90
4.4 LPOP:彈齣列錶最左端的元素 90
4.5 RPOP:彈齣列錶最右端的元素 91
4.6 RPOPLPUSH:將右端彈齣的元素推入左端 92
4.6.1 源列錶和目標列錶相同 93
4.6.2 處理空列錶 94
4.6.3 其他信息 95
示例:先進先齣隊列 95
4.7 LLEN:獲取列錶的長度 96
4.8 LINDEX:獲取指定索引上的元素 97
4.8.1 處理超齣範圍的索引 98
4.8.2 其他信息 98
4.9 LRANGE:獲取指定索引範圍上的元素 98
4.9.1 獲取列錶包含的所有元素 99
4.9.2 處理超齣範圍的索引 100
4.9.3 其他信息 101
示例:分頁 101
4.10 LSET:為指定索引設置新元素 103
4.10.1 處理超齣範圍的索引 104
4.10.2 其他信息 104
4.11 LINSERT:將元素插入列錶 104
4.11.1 處理不存在的元素 105
4.11.2 其他信息 105
4.12 LTRIM:修剪列錶 105
4.12.1 處理負數索引 107
4.12.2 其他信息 107
4.13 LREM:從列錶中移除指定元素 107
示例:待辦事項列錶 109
4.14 BLPOP:阻塞式左端彈齣操作 112
4.14.1 解除阻塞狀態 112
4.14.2 處理空列錶 113
4.14.3 列錶名的作用 114
4.14.4 阻塞效果的範圍 114
4.14.5 其他信息 114
4.15 BRPOP:阻塞式右端彈齣操作 114
4.16 BRPOPLPUSH:阻塞式彈齣並推入操作 114
4.16.1 處理源列錶為空的情況 116
4.16.2 其他信息 116
示例:帶有阻塞功能的消息隊列 116
4.17 重點迴顧 119
第5章 集閤 120
5.1 SADD:將元素添加到集閤 121
5.1.1 忽略已存在元素 122
5.1.2 其他信息 122
5.2 SREM:從集閤中移除元素 122
5.2.1 忽略不存在的元素 122
5.2.2 其他信息 123
5.3 SMOVE:將元素從一個集閤移動到另一個集閤 123
5.3.1 忽略不存在的元素 124
5.3.2 覆蓋已存在的元素 124
5.3.3 其他信息 125
5.4 SMEMBERS:獲取集閤包含的所有元素 125
5.4.1 元素的無序排列 126
5.4.2 其他信息 126
5.5 SCARD:獲取集閤包含的元素數量 126
5.6 SISMEMBER:檢查給定元素是否存在於集閤 127
示例:唯一計數器 128
示例:打標簽 129
示例:點贊 131
示例:投票 132
示例:社交關係 135
5.7 SRANDMEMBER:隨機獲取集閤中的元素 137
5.7.1 返迴指定數量的元素 138
5.7.2 其他信息 139
5.8 SPOP:隨機地從集閤中移除指定數量的元素 139
5.8.1 SPOP與SRANDMEMBER的區彆 140
5.8.2 其他信息 141
示例:抽奬 141
5.9 SINTER、SINTERSTORE:對集閤執行交集計算 142
5.9.1 SINTERSTORE命令 143
5.9.2 其他信息 143
5.10 SUNION、SUNIONSTORE:對集閤執行並集計算 143
5.10.1 SUNIONSTORE命令 144
5.10.2 其他信息 144
5.11 SDIFF、SDIFFSTORE:對集閤執行差集計算 144
5.11.1 SDIFFSTORE命令 145
5.11.2 其他信息 145
示例:共同關注與推薦關注 146
示例:使用反嚮索引構建商品篩選器 149
5.12 重點迴顧 152
第6章 有序集閤 153
6.1 ZADD:添加或更新成員 154
6.1.1 更新已有成員的分值 154
6.1.2 指定要執行的操作 154
6.1.3 返迴被修改成員的數量 155
6.1.4 其他信息 156
6.2 ZREM:移除指定的成員 156
6.2.1 忽略不存在的成員 157
6.2.2 其他信息 157
6.3 ZSCORE:獲取成員的分值 157
6.4 ZINCRBY:對成員的分值執行自增或自減操作 158
6.4.1 執行自減操作 159
6.4.2 處理不存在的鍵或者不存在的成員 160
6.4.3 其他信息 160
6.5 ZCARD:獲取有序集閤的大小 160
6.6 ZRANK、ZREVRANK:獲取成員在有序集閤中的排名 161
6.6.1 處理不存在的鍵或者不存在的成員 162
6.6.2 其他信息 162
6.7 ZRANGE、ZREVRANGE:獲取指定索引範圍內的成員 162
6.7.1 使用負數索引 163
6.7.2 獲取成員及其分值 164
6.7.3 處理不存在的有序集閤 165
6.7.4 其他信息 165
示例:排行榜 165
6.8 ZRANGEBYSCORE、ZREVRAN-GEBYSCORE:獲取指定分值範圍內的成員 167
6.8.1 獲取成員及其分值 168
6.8.2 限製命令返迴的成員數量 168
6.8.3 使用開區間分值範圍 169
6.8.4 使用無限值作為範圍 170
6.8.5 其他信息 171
6.9 ZCOUNT:統計指定分值範圍內的成員數量 171
6.9.1 分值範圍的格式 171
6.9.2 其他信息 172
示例:時間綫 172
6.10 ZREMRANGEBYRANK:移除指定排名範圍內的成員 175
6.10.1 使用負數排名 175
6.10.2 其他信息 175
6.11 ZREMRANGEBYSCORE:移除指定分值範圍內的成員 176
6.12 ZUNIONSTORE、ZINTERSTORE:有序集閤的並集運算和交集運算 176
6.12.1 指定聚閤函數 177
6.12.2 設置權重 179
6.12.3 使用集閤作為輸入 180
6.12.4 其他信息 181
示例:商品推薦 181
6.13 ZRANGEBYLEX、ZREVRAN-GEBYLEX:返迴指定字典序範圍內的成員 182
6.13.1 ZREVRANGEBYLEX 184
6.13.2 限製命令返迴的成員數量 184
6.13.3 其他信息 185
6.14 ZLEXCOUNT:統計位於字典序指定範圍內的成員數量 185
6.15 ZREMRANGEBYLEX:移除位於字典序指定範圍內的成員 186
示例:自動補全 187
6.16 ZPOPMAX、ZPOPMIN:彈齣分值最高和最低的成員 188
6.17 BZPOPMAX、BZPOPMIN:阻塞式最大/最小元素彈齣操作 189
6.18 重點迴顧 191
第7章 HyperLogLog 192
7.1 HyperLogLog簡介 193
7.2 PFADD:對集閤元素進行計數 193
7.3 PFCOUNT:返迴集閤的近似基數 194
7.3.1 返迴並集的近似基數 194
7.3.2 其他信息 195
示例:優化唯一計數器 195
示例:檢測重復信息 196
7.4 PFMERGE:計算多個HyperLogLog的並集 198
7.4.1 PFCOUNT與PFMERGE 198
7.4.2 其他信息 199
示例:實現每周/月度/年度計數器 199
7.5 重點迴顧 200
第8章 位圖 201
8.1 SETBIT:設置二進製位的值 201
8.1.1 位圖的擴展 202
8.1.2 偏移量隻能為正數 203
8.1.3 其他信息 203
8.2 GETBIT:獲取二進製位的值 203
8.2.1 處理範圍之外的偏移量 204
8.2.2 其他信息 204
8.3 BITCOUNT:統計被設置的二進製位數量 204
8.3.1 隻統計位圖指定字節範圍內的二進製位 204
8.3.2 使用負數偏移量定義統計範圍 206
8.3.3 其他信息 206
示例:用戶行為記錄器 207
8.4 BITPOS:查找第一個指定的二進製位值 208
8.4.1 隻在指定的字節範圍內進行查找 209
8.4.2 使用負數偏移量定義查找範圍 209
8.4.3 邊界情況處理 210
8.4.4 其他信息 211
8.5 BITOP:執行二進製位運算 211
8.5.1 處理不同長度的位圖 212
8.5.2 其他信息 212
示例:0-1矩陣 212
8.6 BITFIELD:在位圖中存儲整數值 214
8.6.1 根據偏移量對區域進行設置 214
8.6.2 根據索引對區域進行設置 216
8.6.3 獲取區域存儲的值 216
8.6.4 執行加法操作或減法操作 217
8.6.5 處理溢齣 218
8.6.6 使用位圖存儲整數的原因 219
8.6.7 其他信息 219
示例:緊湊計數器 219
8.7 使用字符串命令對位圖進行操作 221
8.8 重點迴顧 222
第9章 地理坐標 223
9.1 GEOADD:存儲坐標 224
9.1.1 更新已有位置的坐標 224
9.1.2 其他信息 224
9.2 GEOPOS:獲取指定位置的坐標 224
9.3 GEODIST:計算兩個位置之間的直綫距離 225
9.3.1 指定距離的單位 225
9.3.2 處理不存在的位置 226
9.3.3 其他信息 226
示例:具有基本功能的用戶地理位置程序 226
9.4 GEORADIUS:查找指定坐標半徑範圍內的其他位置 228
9.4.1 返迴被匹配位置與中心點之間的距離 229
9.4.2 返迴被匹配位置的坐標 229
9.4.3 排序查找結果 230
9.4.4 限製命令獲取的位置數量 231
9.4.5 同時使用多個可選項 231
9.4.6 其他信息 232
9.5 GEORADIUSBYMEMBER:查找指定位置半徑範圍內的其他位置 232
示例:查找附近用戶 233
9.6 GEOHASH:獲取指定位置的Geohash值 235
9.6.1 在進行範圍查找時獲取Geohash值 235
9.6.2 其他信息 236
9.7 使用有序集閤命令操作GEO數據 236
9.8 重點迴顧 237
第10章 流 238
10.1 XADD:追加新元素到流的末尾 239
10.1.1 流元素的ID 239
10.1.2 不完整的流ID 240
10.1.3 流元素ID的限製 240
10.1.4 自動生成元素ID 241
10.1.5 限製流的長度 242
10.1.6 其他信息 243
10.2 XTRIM:對流進行修剪 243
10.3 XDEL:移除指定元素 244
10.4 XLEN:獲取流包含的元素數量 244
10.5 XRANGE、XREVRANGE:訪問流中元素 245
10.5.1 獲取ID指定的單個元素 245
10.5.2 獲取指定ID範圍內的多個元素 246
10.5.3 獲取所有元素 247
10.5.4 獲取指定數量的元素 248
10.5.5 對流進行迭代 249
10.5.6 以逆序訪問流中元素 251
10.5.7 其他信息 251
10.6 XREAD:以阻塞或非阻塞方式獲取流元素 251
10.6.1 從多個流中獲取大於指定ID的元素 251
10.6.2 迭代流 253
10.6.3 阻塞 254
10.6.4 隻獲取新齣現的元素 256
10.6.5 其他信息 258
示例:消息隊列 258
10.7 消費者組 260
10.7.1 創建消費者組 261
10.7.2 讀取消費者組 262
10.7.3 消費者 262
10.7.4 消息的狀態轉換 263
10.7.5 實際示例 263
10.8 XGROUP:管理消費者組 264
10.8.1 創建消費者組 264
10.8.2 修改消費者組的最後遞送消息ID 265
10.8.3 刪除消費者 267
10.8.4 刪除消費者組 268
10.9 XREADGROUP:讀取消費者組中的消息 268
10.9.1 讀取未遞送過的新消息 269
10.9.2 其他信息 270
10.10 XPENDING:顯示待處理消息的相關信息 270
10.11 XACK:將消息標記為“已處理” 271
10.12 XCLAIM:轉移消息的歸屬權 272
10.12.1 隻返迴被轉移消息的ID 273
10.12.2 其他信息 273
10.13 XINFO:查看流和消費者組的相關信息 273
10.13.1 打印消費者信息 273
10.13.2 打印消費者組信息 274
10.13.3 打印流消息 274
10.13.4 其他信息 275
示例:為消息隊列提供消費者組功能 275
10.14 重點迴顧 277
第二部分 附加功能
第11章 數據庫 280
11.1 SELECT:切換至指定的數據庫 281
11.2 KEYS:獲取所有與給定匹配符相匹配的鍵 282
11.2.1 全局匹配符 282
11.2.2 其他信息 283
11.3 SCAN:以漸進方式迭代數據庫中的鍵 283
11.3.1 一次簡單的迭代示例 284
11.3.2 SCAN命令的迭代保證 285
11.3.3 遊標的使用 285
11.3.4 迭代與給定匹配符相匹配的鍵 285
11.3.5 指定返迴鍵的期望數量 286
11.3.6 數據結構迭代命令 287
11.3.7 其他信息 289
示例:構建數據庫迭代器 289
11.4 RANDOMKEY:隨機返迴一個鍵 292
11.5 SORT:對鍵的值進行排序 292
11.5.1 指定排序方式 293
11.5.2 對字符串值進行排序 294
11.5.3 隻獲取部分排序結果 294
11.5.4 獲取外部鍵的值作為結果 295
11.5.5 使用外部鍵的值作為排序權重 298
11.5.6 保存排序結果 299
11.5.7 其他信息 300
11.6 EXISTS:檢查給定鍵是否存在 300
11.6.1 隻能接受單個鍵的EXISTS命令 300
11.6.2 其他信息 300
11.7 DBSIZE:獲取數據庫包含的鍵值對數量 301
11.8 TYPE:查看鍵的類型 301
示例:數據庫取樣程序 302
11.9 RENAME、RENAMENX:修改鍵名 304
11.9.1 覆蓋已存在的鍵 305
11.9.2 隻在新鍵名尚未被占用的情況下進行改名 305
11.9.3 其他信息 306
11.10 MOVE:將給定的鍵移動到另一個數據庫 306
11.10.1 不覆蓋同名鍵 306
11.10.2 其他信息 307
11.11 DEL:移除指定的鍵 307
11.12 UNLINK:以異步方式移除指定的鍵 307
11.13 FLUSHDB:清空當前數據庫 308
11.13.1 async選項 308
11.13.2 其他信息 309
11.14 FLUSHALL:清空所有數據庫 309
11.14.1 async選項 309
11.14.2 其他信息 309
11.15 SWAPDB:互換數據庫 309
示例:使用SWAPDB命令實行在綫替換數據庫 310
11.16 重點迴顧 312
第12章 自動過期 313
12.1 EXPIRE、PEXPIRE:設置生存時間 313
12.1.1 更新鍵的生存時間 315
12.1.2 其他信息 315
示例:帶有自動移除特性的緩存程序 316
12.2 SET命令的EX選項和PX選項 317
12.2.1 組閤命令的安全問題 317
12.2.2 其他信息 318
示例:帶有自動釋放特性的鎖 318
12.3 EXPIREAT、PEXPIREAT:設置過期時間 319
12.3.1 EXPIREAT使用示例 320
12.3.2 PEXPIREAT使用示例 320
12.3.3 更新鍵的過期時間 321
12.3.4 自動過期特性的不足之處 321
12.3.5 其他信息 322
12.4 TTL、PTTL:獲取鍵的剩餘生存時間 322
12.4.1 沒有剩餘生存時間的鍵和不存在的鍵 322
12.4.2 TTL命令的精度問題 322
12.4.3 其他信息 323
示例:自動過期的登錄會話 323
示例:自動淘汰冷門數據 326
12.5 重點迴顧 328
第13章 流水綫與事務 329
13.1 流水綫 329
示例:使用流水綫優化隨機鍵創建程序 331
13.2 事務 333
13.2.1 MULTI:開啓事務 335
13.2.2 EXEC:執行事務 335
13.2.3 DISCARD:放棄事務 336
13.2.4 事務的安全性 337
13.2.5 事務對服務器的影響 337
13.2.6 流水綫與事務 337
示例:實現mlpop()函數 338
13.3 帶有樂觀鎖的事務 339
13.3.1 WATCH:對鍵進行監視 341
13.3.2 UNWATCH:取消對鍵的監視 342
示例:帶有身份驗證功能的鎖 343
示例:帶有身份驗證功能的計數信號量 344
13.4 重點迴顧 347
第14章 Lua腳本 348
14.1 EVAL:執行腳本 349
14.1.1 使用腳本執行Redis命令 349
14.1.2 值轉換 350
14.1.3 全局變量保護 352
14.1.4 在腳本中切換數據庫 353
14.1.5 腳本的原子性 353
14.1.6 以命令行方式執行腳本 353
14.1.7 其他信息 354
示例:使用腳本重新實現帶有身份驗證功能的鎖 354
示例:實現LPOPRPUSH命令 355
14.2 SCRIPT LOAD和EVALSHA:緩存並執行腳本 357
14.3 腳本管理 359
14.3.1 SCRIPT EXISTS:檢查腳本是否已被緩存 359
14.3.2 SCRIPT FLUSH:移除所有已緩存腳本 359
14.3.3 SCRIPT KILL:強製停止正在運行的腳本 360
14.4 內置函數庫 361
14.4.1 redis包 362
14.4.2 bit包 364
14.4.3 struct包 364
14.4.4 cjson包 365
14.4.5 cmsgpack包 365
14.5 腳本調試 366
14.5.1 一個簡單的調試示例 366
14.5.2 調試命令 368
14.5.3 斷點 369
14.5.4 動態斷點 371
14.5.5 輸齣調試日誌 372
14.5.6 執行指定的代碼或命令 373
14.5.7 顯示調用鏈 373
14.5.8 重載腳本 375
14.5.9 調試模式 376
14.5.10 終止調試會話 378
14.6 重點迴顧 379
第15章 持久化 380
15.1 RDB持久化 380
15.1.1 SAVE:阻塞服務器並創建RDB文件 381
15.1.2 BGSAVE:以非阻塞方式創建RDB文件 382
15.1.3 通過配置選項自動創建RDB文件 382
15.1.4 SAVE命令和BGSAVE命令的選擇 384
15.1.5 RDB文件結構 384
15.1.6 載入RDB文件 386
15.1.7 數據丟失 387
15.2 AOF持久化 389
15.2.1 打開AOF持久化功能 390
15.2.2 設置AOF文件的衝洗頻率 391
15.2.3 AOF重寫 391
15.2.4 AOF持久化的優缺點 394
15.3 RDB-AOF混閤持久化 394
15.4 同時使用RDB持久化和AOF持久化 396
15.5 無持久化 397
15.6 SHUTDOWN:關閉服務器 397
15.6.1 通過可選項指示持久化操作 398
15.6.2 其他信息 399
15.7 重點迴顧 399
第16章 發布與訂閱 400
16.1 PUBLISH:嚮頻道發送消息 402
16.2 SUBSCRIBE:訂閱頻道 402
16.2.1 接收頻道消息 403
16.2.2 其他信息 404
16.3 UNSUBSCRIBE:退訂頻道 404
16.3.1 UNSUBSCRIBE命令在不同客戶端中的應用 404
16.3.2 其他信息 405
16.4 PSUBSCRIBE:訂閱模式 405
16.4.1 接收模式消息 406
16.4.2 其他信息 407
16.5 PUNSUBSCRIBE:退訂模式 407
16.5.1 PUNSUBSCRIBE命令在不同客戶端中的應用 407
16.5.2 其他信息 408
16.6 PUBSUB:查看發布與訂閱的相關信息 408
16.6.1 查看被訂閱的頻道 408
16.6.2 查看頻道的訂閱者數量 409
16.6.3 查看被訂閱模式的總數量 409
16.6.4 其他信息 409
示例:廣播係統 409
16.7 重點迴顧 411
第17章 模塊 412
17.1 模塊的管理 413
17.1.1 編譯模塊 413
17.1.2 載入模塊 413
17.1.3 列齣已載入的模塊 414
17.1.4 卸載模塊 415
17.2 ReJSON模塊 416
17.2.1 編譯和載入 416
17.2.2 使用示例 417
17.2.3 ReJSON路徑 418
17.2.4 API簡介 420
17.3 RediSQL模塊 423
17.3.1 編譯模塊 423
17.3.2 使用示例 424
17.3.3 API簡介 425
17.4 RediSearch模塊 428
17.4.1 下載與編譯 428
17.4.2 使用示例 429
17.4.3 API簡介 430
17.5 重點迴顧 442
第三部分 多機功能
第18章 復製 444
18.1 REPLICAOF:將服務器設置為從服務器 446
18.1.1 通過配置選項設置從服務器 447
18.1.2 取消復製 447
18.1.3 其他信息 448
18.2 ROLE:查看服務器的角色 448
18.2.1 主服務器執行ROLE命令 448
18.2.2 從服務器執行ROLE命令 449
18.2.3 其他信息 449
18.3 數據同步 449
18.3.1 完整同步 450
18.3.2 在綫更新 450
18.3.3 部分同步 451
18.4 無須硬盤的復製 452
18.5 降低數據不一緻情況齣現的概率 452
18.6 可寫的從服務器 453
示例:使用從服務器處理復雜計算操作 454
18.7 腳本復製 455
18.7.1 腳本傳播模式 455
18.7.2 命令傳播模式 456
18.7.3 選擇性命令傳播 457
18.7.4 模式的選擇 458
18.8 重點迴顧 459
第19章 Sentinel 460
19.1 啓動Sentinel 461
19.2 Sentinel網絡 464
19.3 Sentinel管理命令 466
19.3.1 SENTINEL masters:獲取所有被監視主服務器的信息 467
19.3.2 SENTINEL master:獲取指定被監視主服務器的信息 468
19.3.3 SENTINEL slaves:獲取被監視主服務器的從服務器信息 469
19.3.4 SENTINEL sentinels:獲取其他Sentinel的相關信息 471
19.3.5 SENTINEL get-master-addr-by-name:獲取給定主服務器的IP地址和端口號 472
19.3.6 SENTINEL reset:重置主服務器狀態 473
19.3.7 SENTINEL failover:強製執行故障轉移 473
19.3.8 SENTINEL ckquorum:檢查可用Sentinel的數量 474
19.3.9 SENTINEL flushconfig:強製寫入配置文件 474
19.4 在綫配置Sentinel 475
19.4.1 SENTINEL monitor:監視給定主服務器 475
19.4.2 SENTINEL remove:取消對給定主服務器的監視 476
19.4.3 SENTINEL set:修改Sentinel配置選項的值 477
19.4.4 使用在綫配置命令的注意事項 478
示例:使用redis-py管理Sentinel 479
19.5 重點迴顧 479
第20章 集群 481
20.1 基本特性 481
20.1.1 復製與高可用 481
20.1.2 分片與重分片 482
20.1.3 高性能 482
20.1.4 簡單易用 483
20.2 搭建集群 483
20.2.1 快速搭建集群 483
20.2.2 手動搭建集群 486
示例:使用客戶端連接集群 489
20.3 散列標簽 491
20.4 打開/關閉從節點的讀命令執行權限 492
20.4.1 READONLY:打開讀命令執行權限 493
20.4.2 READWRITE:關閉讀命令執行權限 493
20.4.3 其他信息 494
20.5 集群管理工具redis-cli 494
20.5.1 創建集群 495
20.5.2 查看集群信息 496
20.5.3 檢查集群 497
20.5.4 修復槽錯誤 498
20.5.5 重分片 499
20.5.6 負載均衡 501
20.5.7 添加節點 502
20.5.8 移除節點 503
20.5.9 執行命令 504
20.5.10 設置超時時間 504
20.5.11 導入數據 505
20.6 集群管理命令 506
20.6.1 CLUSTER MEET:將節點添加至集群 506
20.6.2 CLUSTER NODES:查看集群內所有節點的相關信息 508
20.6.3 CLUSTER MYID:查看當前節點的運行ID 511
20.6.4 CLUSTER INFO:查看集群信息 512
20.6.5 CLUSTER FORGET:從集群中移除節點 513
20.6.6 CLUSTER REPLICATE:將節點變為從節點 514
20.6.7 CLUSTER REPLICAS:查看給定節點的所有從節點 515
20.6.8 CLUSTER FAILOVER:強製執行故障轉移 516
20.6.9 CLUSTER RESET:重置節點 517
20.7 槽管理命令 518
20.7.1 CLUSTER SLOTS:查看槽與節點之間的關聯信息 519
20.7.2 CLUSTER ADDSLOTS:把槽指派給節點 520
20.7.3 CLUSTER DELSLOTS:撤銷對節點的槽指派 521
20.7.4 CLUSTER FLUSHSLOTS:撤銷對節點的所有槽指派 522
20.7.5 CLUSTER KEYSLOT:查看鍵所屬的槽 523
20.7.6 CLUSTER COUNTKEYSINSLOT:查看槽包含的鍵數量 524
20.7.7 CLUSTER GETKEYSINSLOT:獲取槽包含的鍵 524
20.7.8 CLUSTER SETSLOT:改變槽的狀態 525
20.8 重點迴顧 527
附錄A Redis安裝方法 528
附錄B redis-py安裝方法 531
附錄C Redis命令索引錶 533
· · · · · · (
收起)