第 1章 简介 1
1.1 历史与发展 1
1.2 特性 2
1.2.1 存储结构 2
1.2.2 内存存储与持久化 3
1.2.3 功能丰富 4
1.2.4 简单稳定 4
第 2章 准备 7
2.1 安装Redis 7
2.1.1 在POSIX中安装 7
2.1.2 在macOS中安装 8
2.1.3 在Windows中安装 9
2.2 启动和停止Redis 10
2.2.1 启动Redis 11
2.2.2 停止Redis 13
2.3 Redis命令行客户端 13
2.3.1 发送命令 13
2.3.2 命令返回值 14
2.4 配置 15
2.5 多数据库 16
第3章 入门 19
3.1 热身 19
3.2 字符串类型 21
3.2.1 介绍 22
3.2.2 命令 22
3.2.3 实践 25
3.2.4 命令拾遗 27
3.3 哈希类型 32
3.3.1 介绍 32
3.3.2 命令 34
3.3.3 实践 36
3.3.4 命令拾遗 38
3.4 列表类型 39
3.4.1 介绍 39
3.4.2 命令 40
3.4.3 实践 43
3.4.4 命令拾遗 44
3.5 集合类型 46
3.5.1 介绍 47
3.5.2 命令 47
3.5.3 实践 50
3.5.4 命令拾遗 52
3.6 有序集合类型 55
3.6.1 介绍 55
3.6.2 命令 56
3.6.3 实践 59
3.6.4 命令拾遗 60
3.7 流类型 63
3.7.1 介绍 64
3.7.2 命令 65
3.7.3 实践 67
3.7.4 命令拾遗 68
第4章 进阶 71
4.1 事务 71
4.1.1 概述 72
4.1.2 错误处理 73
4.1.3 WATCH命令 74
4.2 过期时间 76
4.2.1 命令 76
4.2.2 实现访问频率限制之一 79
4.2.3 实现访问频率限制之二 80
4.2.4 实现缓存 80
4.3 排序 82
4.3.1 有序集合的集合操作 82
4.3.2 SORT命令 83
4.3.3 BY参数 84
4.3.4 GET参数 87
4.3.5 STORE参数 88
4.3.6 性能优化 89
4.4 消息通知 89
4.4.1 任务队列 90
4.4.2 使用Redis实现任务队列 91
4.4.3 优先级队列 92
4.4.4 “发布/订阅”模式 93
4.4.5 按照规则订阅 94
4.4.6 强大的流 96
4.4.7 流与消费组 98
4.5 管道 101
4.6 节省空间 102
4.6.1 精简键名和键值 103
4.6.2 内部编码优化 103
第5章 实践 111
5.1 PHP与Redis 111
5.1.1 安装 111
5.1.2 使用方法 112
5.1.3 简便用法 113
5.1.4 实践:用户注册登录功能 114
5.2 Ruby与Redis 118
5.2.1 安装 119
5.2.2 使用方法 119
5.2.3 简便用法 119
5.2.4 实践:自动完成 120
5.3 Python与Redis 123
5.3.1 安装 123
5.3.2 使用方法 123
5.3.3 简便用法 123
5.3.4 实践:在线的好友 124
5.4 Node.js与Redis 129
5.4.1 安装 129
5.4.2 使用方法 129
5.4.3 简便用法 131
5.4.4 实践:IP地址查询 132
第6章 脚本 137
6.1 概览 137
6.1.1 脚本 138
6.1.2 实例:访问频率限制 138
6.2 Lua语言 139
6.2.1 Lua语法 140
6.2.2 标准库 149
6.2.3 cjson库和cmsgpack库 152
6.3 Redis与Lua 153
6.3.1 在脚本中调用Redis命令 153
6.3.2 从脚本中返回值 153
6.3.3 脚本相关命令 154
6.3.4 应用实例 155
6.4 深入脚本 158
6.4.1 KEYS与ARGV 158
6.4.2 沙盒与随机数 159
6.4.3 其他脚本相关命令 159
6.4.4 原子性和执行时间 160
第7章 持久化 163
7.1 RDB方式 163
7.1.1 根据配置规则进行自动
快照 164
7.1.2 执行SAVE或BGSAVE
命令 164
7.1.3 执行FLUSHALL命令 165
7.1.4 执行复制时 165
7.1.5 快照原理 165
7.2 AOF方式 166
7.2.1 开启AOF 167
7.2.2 AOF的实现 167
7.2.3 同步硬盘数据 169
第8章 集群 171
8.1 复制 171
8.1.1 配置 172
8.1.2 原理 174
8.1.3 图结构 176
8.1.4 读写分离与一致性 177
8.1.5 从数据库持久化 177
8.1.6 无硬盘复制 177
8.1.7 增量复制 178
8.2 哨兵 179
8.2.1 什么是哨兵 179
8.2.2 马上上手 180
8.2.3 实现原理 183
8.2.4 哨兵的部署 186
8.3 集群 187
8.3.1 配置集群 187
8.3.2 节点的增加 191
8.3.3 插槽的分配 191
8.3.4 获取与插槽对应的节点 196
8.3.5 故障恢复 197
第9章 管理 199
9.1 安全 199
9.1.1 可信的环境 199
9.1.2 数据库密码 200
9.1.3 命名命令 202
9.2 通信协议 202
9.2.1 简单协议 202
9.2.2 统一请求协议 204
9.3 管理工具 205
9.3.1 redis-cli 205
9.3.2 Medis 206
9.3.3 phpRedisAdmin 208
9.3.4 Rdbtools 210
附录A Redis命令属性 211
A.1 REDIS_CMD_WRITE 211
A.2 REDIS_CMD_DENYOOM 213
A.3 REDIS_CMD_NOSCRIPT 214
A.4 REDIS_CMD_RANDOM 215
A.5 REDIS_CMD_SORT_FOR_
SCRIPT 215
A.6 REDIS_CMD_LOADING 215
附录B 配置参数索引 217
附录C CRC16实现参考 219