前言
第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.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
示例:給文章存儲程序加上文章長度計數功能和文章預覽功能 31
2.11 APPEND:追加新內容到值的末尾 32
示例:存儲日志 34
2.12 使用字符串鍵存儲數字值 37
2.13 INCRBY、DECRBY:對整數值執行加法操作和減法操作 37
2.14 INCR、DECR:對整數值執行加1操作和減1操作 40
2.15 INCRBYFLOAT:對數字值執行浮點數加法操作 41
示例:ID生成器 43
示例:計數器 44
示例:限速器 46
2.16 重點回顧 48
第3章散列 49
3.1 散列簡介 50
3.2 HSET:為字段設置值 51
3.4 HGET:獲取字段的值 54
示例:實現短網址生成程序 55
3.5 HINCRBY:對字段存儲的整數值執行加法或減法操作 58
3.6 HINCRBYFLOAT:對字段存儲的數字值執行浮點數加法或減法操作 59
示例:使用散列鍵重新實現計數器 60
3.7 HSTRLEN:獲取字段值的字節長度 63
3.8 HEXISTS:檢查字段是否存在 63
3.9 HDEL:刪除字段 64
3.10 HLEN:獲取散列包含的字段數量 65
示例:實現用戶登錄會話 66
3.11 HMSET:一次為多個字段設置值 69
3.12 HMGET:一次獲取多個字段的值 70
3.13 HKEYS、HVALS、HGETALL:獲取所有字段、所有值、所有字段和值 71
示例:存儲圖數據 73
示例:使用散列鍵重新實現文章存儲?程序 77
3.14 散列與字符串 79
3.15 重點回顧 82
第4章列表 83
4.1 LPUS素推入列表左端 84
4.2 RPUS素推入列表右端 86
4.3 LPUSHX、RPUSHX:隻對已存在的列表執行推入操作 88
4.4 LPOP:彈出列表素 90
4.5 RPOP:彈出列表素 91
4.6 RPOPLPUSH:將右端素推入左端 92
示例:先進先出隊列 95
4.7 LLEN:獲取列表的長度 96
4.8 LINDEX:獲取指定索素 97
4.9 LRANGE:獲取指定索引範素 98
示例:分頁 101
4.10 LSET:為指定索引素 103
4.11 LINSER素插入列表 104
4.12 LTRIM:修剪列表 105
4.13 LREM:從列表中移素 107
示例:待辦事項列表 109
4.14 BLPOP:阻塞式左端彈出操作 112
4.15 BRPOP:阻塞式右端彈出操作 114
4.16 BRPOPLPUSH:阻塞式彈出並推入操作 114
示例:帶有阻塞功能的消息隊列 116
4.17 重點回顧 119
第5章集合 120
5.1 SAD素添加到集合 121
5.2 SREM:從集合素 122
5.3 SMOV素從一個集合移動到另一個集合 123
5.4 SMEMBERS:獲取集合包含素 125
5.5 SCARD:獲取集合素數量 126
5.6 SISMEMBER:檢素是否存在於集合 127
示例:計數器 128
示例:打標簽 129
示例:點贊 131
示例:投票 132
示例:社交關繫 135
5.7 SRANDMEMBER:隨機獲取集素 137
5.8 SPOP:隨機地從集合中移除指定素 139
示例:抽獎 141
5.9 SINTER、SINTERSTORE:對集合執行交集計算 142
5.10 SUNION、SUNIONSTORE:對集合執行並集計算 143
5.11 SDIFF、SDIFFSTORE:對集合執行差集計算 144
示例:共同關注與推薦關注 146
示例:使用反向索引構建商品篩選器 149
5.12 重點回顧 152
第6章有序集合 153
6.1 ZADD:添加或更新成員 154
6.2 ZREM:移除指定的成員 156
6.3 ZSCORE:獲取成員的分值 157
6.4 ZINCRBY:對成員的分值執行自增或自減操作 158
6.5 ZCARD:獲取有序集合的大小 160
6.6 ZRANK、ZREVRANK:獲取成員在有序集合中的排名 161
6.7 ZRANGE、ZREVRANGE:獲取指定索引範圍內的成員 162
示例:排行榜 165
6.8 ZRANGEBYSCORE、ZREVRAN-GEBYSCORE:獲取指定分值範圍內的成員 167
6.9 ZCOUNT:統計指定分值範圍內的成員數量 171
示例:時間線 172
6.10 ZREMRANGEBYRANK:移除指定排名範圍內的成員 175
6.11 ZREMRANGEBYSCORE:移除指定分值範圍內的成員 176
6.12 ZUNIONSTORE、ZINTERSTORE:有序集合的並集運算和交集運算 176
示例:商品推薦 181
6.13 ZRANGEBYLEX、ZREVRAN-GEBYLEX:返回指定字典序範圍內的成員 182
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
示例:優化計數器 195
示例:檢測重復信息 196
7.4 PFMERGE:計算多個HyperLogLog的並集 198
示例:實現每周/月度/年度計數器 199
7.5 重點回顧 200
第8章位圖 201
8.1 SETBIT:設置二進制位的值 201
8.2 GETBIT:獲取二進制位的值 203
8.3 BITCOUNT:統計被設置的二進制位數量 204
示例:用戶行為記錄器 207
8.4 BITPOS:查找個指定的二進制位值 208
8.5 BITOP:執行二進制位運算 211
示例:0-1矩陣 212
8.6 BITFIELD:在位圖中存儲整數值 214
示例:緊湊計數器 219
8.7 使用字符串命令對位圖進行操作 221
8.8 重點回顧 222
第9章地理坐標 223
9.1 GEOADD:存儲坐標 224
9.2 GEOPOS:獲取指定位置的坐標 224
9.3 GEODIST:計算兩個位置之間的直線距離 225
示例:具有基本功能的用戶地理位置程序 226
9.4 GEORADIUS:查找指定坐標半徑範圍內的其他位置 228
9.5 GEORADIUSBYMEMBER:查找指定位置半徑範圍內的其他位置 232
示例:查找附近用戶 233
9.6 GEOHASH:獲取指定位置的Geohash值 235
9.7 使用有序集合命令操作GEO數據 236
9.8 重點回顧 237
第10章流 238
10.1 XADD:素到流的末尾 239
10.2 XTRIM:對流進行修剪 243
10.3 XDEL:移素 244
10.4 XLEN:獲取流素數量 244
10.5 XRANGE、XREVRANGE:訪素 245
10.6 XREAD:以阻塞或非阻塞方式素 251
示例:消息隊列 258
10.7 消費者組 260
10.8 XGROUP:管理消費者組 264
10.9 XREADGROUP:讀取消費者組中的消息 268
10.10 XPENDING:顯示待處理消息的相關信息 270
10.11 XACK:將消息標記為“已處理” 271
10.12 XCLAIM:轉移消息的歸屬權 272
10.13 XINFO:查看流和消費者組的相關信息 273
示例:為消息隊列提供消費者組功能 275
10.14 重點回顧 277
第二部分附加功能
第11章數據庫 280
第12章自動過期 313
第13章流水線與事務 329
第14章Lua腳本 348
第15章持久化 380
第16章發布與訂閱 400
第17章模塊 412
第三部分多機功能
第18章復制 444
第19章Sentinel 460
第20章集群 481