热门排行
简介
《深入理解Redis》以由浅入深、由原理到应用场景的方式介绍了Redis 这款NoSQL 数据库产品。书中不仅细致地讲解了Redis 中的数据结构及流行的使用模式,还针对Redis 键的设计和管理,以及内存管理提出了建设性的方案。同时,作者深入Redis 源码,将其内部构造通过源代码调试的方式进行呈现。
《深入理解Redis》适合有一定NoSQL 经验的开发者或者架构师阅读。读者可以从书中找到许多应用场景和解决方案,例如Docker 部署、Redis 消息队列、基于Redis 的ETL 应用和基于Redis 的机器学习等。
目录
1 为何选择Redis? 1
合适之选? 2
尝试使用Redis 4
流行的使用模式 9
Redis 不合心意?马上再试试! 11
总结 13
2 高级键管理与数据结构 14
Redis 键 14
- - Redis 键模式 15
- - 键分隔符和命名约定 17
手动创建Redis 模式 19
- - 解构Redis 对象映射器 22
- - 键过期 27
- - 键的注意事项 27
大O 符号 28
-- 为自定义代码计算大O 符号 30
回顾Redis 数据结构的时间复杂度 32
- -字符串 32
- -哈希 33
- -列表 34
- -集合 35
有序集合 36
高级有序集合操作 39
位串和位操作 39
HyperLogLogs 41
总结 42
3 内存管理的建议与技巧 43
配置Redis 43
- -主从 44
32 位Redis 44
- - INFO memory 详解 46
键过期 48
LRU 键清除策略 53
创建内存高效的Redis 数据结构 61
- -小巧的哈希、列表、集合和有序集合 61
- -把位、字节和Redis 字符串用作随机访问数组 67
优化哈希,高效存储 68
硬件和网络延迟 71
操作系统建议 73
总结 74
4 Redis 编程第一部分:Redis 核心、客户端和编程语言 75
Redis 的内部结构 75
- - 理解redish 和redisc 82
- - Redis 序列化协议92
- - Redis RDB 格式 95
使用Redis 和Python 创建协程 98
- -使用Nodejs 和Redis 实现Todo 列表应用 102
- -复制与公共访问 105
总结 105
5 Redis 编程第二部分:Lua 脚本、管理与DevOps 106
在Redis 中使用Lua 106
使用Redis 的KEYS 和ARGV 115
Redis 中的高级Lua 脚本 119
- - MARC21 数据提取 119
- -纸质文具在线商店 121
- -让JSON-LD、Lua 和Redis 协同工作 124
Redis Lua 调试器 128
- - Redis 的编程与管理 131
- -主从复制 132
- -使用MULTI 和EXEC 实现事务 134
Redis 在DevOps 中扮演的角色 137
总结 138
6 可伸缩性:Redis 集群和Sentinel 140
数据分区的方法 140
- -范围分区 141
- -列表分区 143
- -哈希分区 146
- -复合分区 147
- -键哈希标签 148
使用Twemproxy 实现Redis 集群 149
- -使用关联数据片段服务器测试Twemproxy 150
- -Redis 集群的背景 156
- -Redis 集群概览 157
使用Redis 集群 158
- - Redis 集群实时重新配置及重新分片 163
- -故障转移 166
- -在Redis 集群中替换或者升级节点 168
使用Redis Sentinel 进行监控 169
- -为区域代码列表分区配置Redis Sentinel 171
总结 174
7 Redis 与互补的NoSQL 技术 175
NoSQL 技术的繁荣 175
Redis 作为MongoDB 的分析补充 179
Redis 作为ElasticSearch 的预处理组件 191
- -在BIBCAT 中使用Redis 和ElasticSearch 191
- - ElasticSearch、Logstash 和Redis 196
Redis 作为Fedora Commons 的智能缓存补充 197
总结 203
8 Docker 容器与云端部署 204
Linux 容器 204
与Redis 相关的Docker 基础 209
Docker 镜像中的层 217
- - Docker 文件系统后端 218
Docker 和Redis 的问题 225
使用Docker Compose 打包应用程序 225
Redis 和AWS 230
专门的云托管选项 231
Redis Labs 232
- - DigitalOcean Redis 232
总结 233
9 任务管理与消息队列 234
Redis 的发布/订阅模式概述 234
- -发布/订阅RESP 回复 235
- - SUBSCRIBE 和UNSUBSCRIBE RESP 数组 235
- - PSUBSCRIBE 和UNSUBSCRIBE 数组 237
- -使用redis-cli 进行发布/订阅 238
Redis 发布订阅实战 240
- -第一个工作站采用Python 进行发布订阅 242
- -第二个工作站采用Nodejs 进行发布订阅 244
- -第三个工作站使用Lua 客户端进行发布订阅 246
Redis 键空间通知 249
使用Redis 和Celery 进行任务管理 253
GIS 和RestMQ 257
使用RestMQ 进行任务管理 260
- -使用Redis 技术进行消息通信 262
使用Disque 进行消息通信 262
总结 264
10 信息流的测量与管理 265
基于Redis 的ETL 方案 265
- -将JSON 转换成RESP 271
- -管理Redis 时的安全考虑 277
- -使用Redis Web 仪表板进行运营监测 280
机器学习 281
- -朴素贝叶斯与工作分类 282
- -使用Redis 实现线性规划 292
总结 296
附录:来源 298