Redis使用手冊

Redis使用手冊

《Redis使用手冊》作者:黃健宏,2019年9月機械工業出版社出版。系統化介紹Redis命令及其套用場景,內容深入、全面,是掌握Redis的案頭必備參考書。覆蓋 Redis 的 9 種數據結構,7 項附加功能和 3 項多機功能。全書包含 50 多個使用示例,180 多條命令詳解。

基本介紹

  • 書名:Redis使用手冊
  • 作者:黃健宏
  • ISBN:978-7-111-63652-6
  • 頁數:556
  • 定價:139
  • 出版社:機械工業出版社
  • 出版時間:2019年9月
  • 裝幀:平裝
  • 開本:16
內容簡介,目錄,作者簡介,

內容簡介

本書系統化介紹Redis命令及其套用場景,內容深入,圖文並茂,巨細靡遺,是掌握Redis的案頭必備參考書。本書主要分為三大部分,共20章。第一部分“數據結構與套用”介紹Redis最核心的九種數據結構,列舉了操作這些數據結構的眾多命令及其詳細信息,並在其中穿插介紹了多個使用 Redis 命令構建套用序的示例。通過這些程式示例,讀者可以進一步加深對命令的認識,並學會如何在實際中套用這些命令,從而達到學而致用的目的。第二部分“附加功能”介紹Redis在數據結構的基礎上為用戶提供的額外功能。其中包括資料庫管理、自動過期功能、流水線與事務、Lua 腳本、持久化、發布與訂閱、模組管理等。讀者可以通過閱讀這一部分來學會如何將 Redis 套用在更多場景中。第三部分“多機功能”介紹 Redis 的三項多機功能:複製、Sentinel 和集群。讀者可以通過閱讀這一部分來獲得擴展 Redis 讀寫性能的相關知識,並根據自己的情況為 Redis 系統選擇合適的擴展方式。

目錄

前 言
第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

作者簡介

黃健宏 2011年開始接觸Redis,之後一直在持續地學習和研究Redis源碼,並通過寫書、翻譯、講授課程等方式分享Redis知識。他是《Redis設計與實現》的作者,《Redis實戰》的譯者,並且長期翻譯和維護著線上的中文Redis文檔《Redis命令參考》。

相關詞條

熱門詞條

聯絡我們