前 言
第1章 引言 1
1.1 Redis簡介 1
1.2 內(nèi)容編排 3
1.3 目標(biāo)讀者 4
1.4 預(yù)備工作 4
1.5 執(zhí)行命令 5
1.6 配置服務(wù)器 6
1.7 示例代碼 7
1.8 版本說明 7
1.9 讀者服務(wù)網(wǎng)站 8
1.10 啟程 8
第一部分 數(shù)據(jù)結(jié)構(gòu)與應(yīng)用
第2章 字符串 10
2.1 SET:為字符串鍵設(shè)置值 11
2.2 GET:獲取字符串鍵的值 13
2.3 GETSET:獲取舊值并設(shè)置新值 14
示例:緩存 14
示例:鎖 16
2.4 MSET:一次為多個字符串鍵設(shè)置值 18
2.5 MGET:一次獲取多個字符串鍵的值 19
2.6 MSETNX:只在鍵不存在的情況下,一次為多個字符串鍵設(shè)置值 20
示例:存儲文章信息 20
2.7 STRLEN:獲取字符串值的字節(jié)長度 25
2.8 字符串值的索引 26
2.9 GETRANGE:獲取字符串值指定索引范圍上的內(nèi)容 26
2.10 SETRANGE:對字符串值的指定索引范圍進行設(shè)置 27
示例:給文章存儲程序加上文章長度計數(shù)功能和文章預(yù)覽功能 31
2.11 APPEND:追加新內(nèi)容到值的末尾 32
示例:存儲日志 34
2.12 使用字符串鍵存儲數(shù)字值 37
2.13 INCRBY、DECRBY:對整數(shù)值執(zhí)行加法操作和減法操作 37
2.14 INCR、DECR:對整數(shù)值執(zhí)行加1操作和減1操作 40
2.15 INCRBYFLOAT:對數(shù)字值執(zhí)行浮點數(shù)加法操作 41
示例:ID生成器 43
示例:計數(shù)器 44
示例:限速器 46
2.16 重點回顧 48
第3章 散列 49
3.1 散列簡介 50
3.2 HSET:為字段設(shè)置值 51
3.4 HGET:獲取字段的值 54
示例:實現(xiàn)短網(wǎng)址生成程序 55
3.5 HINCRBY:對字段存儲的整數(shù)值執(zhí)行加法或減法操作 58
3.6 HINCRBYFLOAT:對字段存儲的數(shù)字值執(zhí)行浮點數(shù)加法或減法操作 59
示例:使用散列鍵重新實現(xiàn)計數(shù)器 60
3.7 HSTRLEN:獲取字段值的字節(jié)長度 63
3.8 HEXISTS:檢查字段是否存在 63
3.9 HDEL:刪除字段 64
3.10 HLEN:獲取散列包含的字段數(shù)量 65
示例:實現(xiàn)用戶登錄會話 66
3.11 HMSET:一次為多個字段設(shè)置值 69
3.12 HMGET:一次獲取多個字段的值 70
3.13 HKEYS、HVALS、HGETALL:獲取所有字段、所有值、所有字段和值 71
示例:存儲圖數(shù)據(jù) 73
示例:使用散列鍵重新實現(xiàn)文章存儲?程序 77
3.14 散列與字符串 79
3.15 重點回顧 82
第4章 列表 83
4.1 LPUSH:將元素推入列表左端 84
4.2 RPUSH:將元素推入列表右端 86
4.3 LPUSHX、RPUSHX:只對已存在的列表執(zhí)行推入操作 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:為指定索引設(shè)置新元素 103
4.11 LINSERT:將元素插入列表 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 SADD:將元素添加到集合 121
5.2 SREM:從集合中移除元素 122
5.3 SMOVE:將元素從一個集合移動到另一個集合 123
5.4 SMEMBERS:獲取集合包含的所有元素 125
5.5 SCARD:獲取集合包含的元素數(shù)量 126
5.6 SISMEMBER:檢查給定元素是否存在于集合 127
示例:唯一計數(shù)器 128
示例:打標(biāo)簽 129
示例:點贊 131
示例:投票 132
示例:社交關(guān)系 135
5.7 SRANDMEMBER:隨機獲取集合中的元素 137
5.8 SPOP:隨機地從集合中移除指定數(shù)量的元素 139
示例:抽獎 141
5.9 SINTER、SINTERSTORE:對集合執(zhí)行交集計算 142
5.10 SUNION、SUNIONSTORE:對集合執(zhí)行并集計算 143
5.11 SDIFF、SDIFFSTORE:對集合執(zhí)行差集計算 144
示例:共同關(guān)注與推薦關(guān)注 146
示例:使用反向索引構(gòu)建商品篩選器 149
5.12 重點回顧 152
第6章 有序集合 153
6.1 ZADD:添加或更新成員 154
6.2 ZREM:移除指定的成員 156
6.3 ZSCORE:獲取成員的分值 157
6.4 ZINCRBY:對成員的分值執(zhí)行自增或自減操作 158
6.5 ZCARD:獲取有序集合的大小 160
6.6 ZRANK、ZREVRANK:獲取成員在有序集合中的排名 161
6.7 ZRANGE、ZREVRANGE:獲取指定索引范圍內(nèi)的成員 162
示例:排行榜 165
6.8 ZRANGEBYSCORE、ZREVRAN-GEBYSCORE:獲取指定分值范圍內(nèi)的成員 167
6.9 ZCOUNT:統(tǒng)計指定分值范圍內(nèi)的成員數(shù)量 171
示例:時間線 172
6.10 ZREMRANGEBYRANK:移除指定排名范圍內(nèi)的成員 175
6.11 ZREMRANGEBYSCORE:移除指定分值范圍內(nèi)的成員 176
6.12 ZUNIONSTORE、ZINTERSTORE:有序集合的并集運算和交集運算 176
示例:商品推薦 181
6.13 ZRANGEBYLEX、ZREVRAN-GEBYLEX:返回指定字典序范圍內(nèi)的成員 182
6.14 ZLEXCOUNT:統(tǒng)計位于字典序指定范圍內(nèi)的成員數(shù)量 185
6.15 ZREMRANGEBYLEX:移除位于字典序指定范圍內(nèi)的成員 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:對集合元素進行計數(shù) 193
7.3 PFCOUNT:返回集合的近似基數(shù) 194
示例:優(yōu)化唯一計數(shù)器 195
示例:檢測重復(fù)信息 196
7.4 PFMERGE:計算多個HyperLogLog的并集 198
示例:實現(xiàn)每周/月度/年度計數(shù)器 199
7.5 重點回顧 200
第8章 位圖 201
8.1 SETBIT:設(shè)置二進制位的值 201
8.2 GETBIT:獲取二進制位的值 203
8.3 BITCOUNT:統(tǒng)計被設(shè)置的二進制位數(shù)量 204
示例:用戶行為記錄器 207
8.4 BITPOS:查找第一個指定的二進制位值 208
8.5 BITOP:執(zhí)行二進制位運算 211
示例:0-1矩陣 212
8.6 BITFIELD:在位圖中存儲整數(shù)值 214
示例:緊湊計數(shù)器 219
8.7 使用字符串命令對位圖進行操作 221
8.8 重點回顧 222
第9章 地理坐標(biāo) 223
9.1 GEOADD:存儲坐標(biāo) 224
9.2 GEOPOS:獲取指定位置的坐標(biāo) 224
9.3 GEODIST:計算兩個位置之間的直線距離 225
示例:具有基本功能的用戶地理位置程序 226
9.4 GEORADIUS:查找指定坐標(biāo)半徑范圍內(nèi)的其他位置 228
9.5 GEORADIUSBYMEMBER:查找指定位置半徑范圍內(nèi)的其他位置 232
示例:查找附近用戶 233
9.6 GEOHASH:獲取指定位置的Geohash值 235
9.7 使用有序集合命令操作GEO數(shù)據(jù) 236
9.8 重點回顧 237
第10章 流 238
10.1 XADD:追加新元素到流的末尾 239
10.2 XTRIM:對流進行修剪 243
10.3 XDEL:移除指定元素 244
10.4 XLEN:獲取流包含的元素數(shù)量 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:顯示待處理消息的相關(guān)信息 270
10.11 XACK:將消息標(biāo)記為已處理 271
10.12 XCLAIM:轉(zhuǎn)移消息的歸屬權(quán) 272
10.13 XINFO:查看流和消費者組的相關(guān)信息 273
示例:為消息隊列提供消費者組功能 275
10.14 重點回顧 277
第二部分 附加功能
第11章 數(shù)據(jù)庫 280
第12章 自動過期 313
第13章 流水線與事務(wù) 329
第14章 Lua腳本 348
第15章 持久化 380
第16章 發(fā)布與訂閱 400
第17章 模塊 412
第三部分 多機功能
第18章 復(fù)制 444
第19章 Sentinel 460
第20章 集群 481