书籍作者:黄健宏 | ISBN:9787111636526 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:9091 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
本书系统化介绍Redis命令及其应用场景,内容深入,图文并茂,巨细靡遗,是掌握Redis的案头必备参考书。本书主要分为三大部分,共20章。第一部分“数据结构与应用”介绍Redis核心的九种数据结构,列举了操作这些数据结构的众多命令及其详细信息,并在其中穿插介绍了多个使用 Redis 命令构建应用序的示例。通过这些程序示例,读者可以进一步加深对命令的认识,并学会如何在实际中应用这些命令,从而达到学而致用的目的。第二部分“附加功能”介绍Redis在数据结构的基础上为用户提供的额外功能。其中包括数据库管理、自动过期功能、流水线与事务、Lua 脚本、持久化、发布与订阅、模块管理等。读者可以通过阅读这一部分来学会如何将 Redis 应用在更多场景中。第三部分“多机功能”介绍 Redis 的三项多机功能:复制、Sentinel 和集群。读者可以通过阅读这一部分来获得扩展 Redis 读写性能的相关知识,并根据自己的情况为 Redis 系统选择合适的扩展方式。
黄健宏 2011年开始接触Redis,之后一直在持续地学习和研究Redis源码,并通过写书、翻译、讲授课程等方式分享Redis知识。他是《Redis设计与实现》的作者,《Redis实战》的译者,并且长期翻译和维护着在线的中文Redis文档《Redis命令参考》。他的个人网站是huangz.me。
《Redis设计与实现》作者、《Redis实战》译者、《Redis命令参考》译者黄健宏全新力作,学习 Redis 的信心之选。
时光荏苒,距离我的第一本书《Redis设计与实现》出版已经过去了整整五年。在这五年间,Redis从一个不为人熟知、只有少量应用的崭新数据库,逐渐变成了内存数据库领域的事实标准。
五年前,当人们提到Redis的时候,语气通常都充满了怀疑:“Redis我还是第一次听说,它好用吗?”“Redis比起Memcached有什么优势?”“用Redis存储数据安全吗,不会丢数据吧?”然而时至今日,经过大量的实践应用,Redis简洁高效、安全稳定的特性已经深入人心。无论是国内还是国外,从五百强公司到小型初创公司都在使用Redis,很多云服务提供商还以Redis为基础构建了相应的缓存服务、消息队列服务以及内存存储服务,当你使用这些服务时,实际上就是在使用Redis。
Redis除了变得越来越受欢迎之外,另一个变化就是更新速度越来越快,功能也变得越来越多、越来越强大,比如说,Redis的数据结构数量已经从过去的五种增加到了九种,RDB-AOF混合持久化模式的引入使得用户不必再陷入“鱼和熊掌不可兼得”的难题中,而集群功能和模块机制的引入则让Redis在性能和功能上拥有了近乎无限的扩展能力。
综上所述,可以说现在的Redis跟五年前比起来已经完全不一样了,而如何向读者讲述新版Redis方方面面的变化,则是每一本Redis书都必须回答的问题。本书以服务Redis初学者和使用者为目标,介绍了Redis日常使用中最常用到的部分,并以“命令描述+代码示例”的模式详细列举了各个Redis命令的用法和用例。我相信无论是刚开始学习Redis的读者,还是每天都要使用Redis的读者,在阅读本书的时候都会有所收获。
虽然在写作本书的过程中已经思虑再三并且几易其稿,但书中难免还是会有错误或者遗漏的地方。如果读者朋友在阅读的过程中发现任何错误,或有任何疑问、建议,都可以通过邮箱[email protected]或者huangz.me中列出的联系方式来联系我。由于技术研究和写作工作较为繁重,本人可能无法每封邮件都予以回复,但只要有来信我就一定会阅读,决不食言。
最后,感谢吴怡编辑在写作过程中给我的帮助和指导,感谢赵亮宇编辑为本书出版所做的努力,还要感谢我的家人和朋友,如果没有他们的关怀和支持,本书不可能顺利完成。
黄健宏
2019年8月于清远
前 言
第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 LPUSH:将元素推入列表左端 84
4.2 RPUSH:将元素推入列表右端 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 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:获取集合包含的元素数量 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
新书出炉,请大家多多支持(营业性笑容)!
2019-09-20