第1章 简介 1
1.1 历史与发展 1
1.2 特性 2
1.2.1 存储结构 2
1.2.2 内存存储与持久化 3
1.2.3 功能丰富 3
1.2.4 简单稳定 4
第2章 准备 7
2.1 安装Redis 7
2.1.1 在POSIX系统中安装 7
2.1.2 在OS X系统中安装 8
2.1.3 在Windows中安装 9
2.2 启动和停止Redis 11
2.2.1 启动Redis 12
2.2.2 停止Redis 14
2.3 Redis命令行客户端 14
2.3.1 发送命令 14
2.3.2 命令返回值 15
2.4 配置 17
2.5 多数据库 17
第3章 入门 19
3.1 热身 19
3.2 字符串类型 21
3.2.1 介绍 22
3.2.2 命令 22
3.2.3 实践 26
3.2.4 命令拾遗 27
3.3 散列类型 32
3.3.1 介绍 33
3.3.2 命令 34
3.3.3 实践 37
3.3.4 命令拾遗 39
3.4 列表类型 40
3.4.1 介绍 41
3.4.2 命令 41
3.4.3 实践 44
3.4.4 命令拾遗 46
3.5 集合类型 48
3.5.1 介绍 48
3.5.2 命令 49
3.5.3 实践 52
3.5.4 命令拾遗 54
3.6 有序集合类型 57
3.6.1 介绍 57
3.6.2 命令 58
3.6.3 实践 62
3.6.4 命令拾遗 63
第4章 进阶 67
4.1 事务 67
4.1.1 概述 68
4.1.2 错误处理 69
4.1.3 WATCH命令介绍 70
4.2 过期时间 72
4.2.1 命令介绍 73
4.2.2 实现访问频率限制之一 75
4.2.3 实现访问频率限制之二 76
4.2.4 实现缓存 77
4.3 排序 78
4.3.1 有序集合的集合操作 78
4.3.2 SORT命令 79
4.3.3 BY参数 81
4.3.4 GET参数 83
4.3.5 STORE参数 84
4.3.6 性能优化 85
4.4 消息通知 85
4.4.1 任务队列 86
4.4.2 使用Redis实现任务队列 87
4.4.3 优先级队列 88
4.4.4 “发布/订阅”模式 90
4.4.5 按照规则订阅 91
4.5 管道 92
4.6 节 省空间 93
4.6.1 精简键名和键值 94
4.6.2 内部编码优化 94
第5章 实践 103
5.1 PHP与Redis 103
5.1.1 安装 104
5.1.2 使用方法 104
5.1.3 简便用法 105
5.1.4 实践:用户注册登录功能 107
5.2 Ruby与Redis 111
5.2.1 安装 111
5.2.2 使用方法 111
5.2.3 简便用法 112
5.2.4 实践:自动完成 112
5.3 Python与Redis 116
5.3.1 安装 116
5.3.2 使用方法 116
5.3.3 简便用法 117
5.3.4 实践:在线的好友 117
5.4 Node.js与Redis 123
5.4.1 安装 123
5.4.2 使用方法 123
5.4.3 简便用法 126
5.4.4 实践:IP地址查询 127
第6章 脚本 131
6.1 概览 131
6.1.1 脚本介绍 132
6.1.2 实例:访问频率限制 132
6.2 Lua语言 133
6.2.1 Lua语法 134
6.2.2 标准库 143
6.2.3 其他库 147
6.3 Redis与Lua 147
6.3.1 在脚本中调用Redis命令 148
6.3.2 从脚本中返回值 148
6.3.3 脚本相关命令 149
6.3.4 应用实例 150
6.4 深入脚本 153
6.4.1 KEYS与ARGV 153
6.4.2 沙盒与随机数 154
6.4.3 其他脚本相关命令 154
6.4.4 原子性和执行时间 155
第7章 持久化 157
7.1 RDB方式 157
7.1.1 根据配置规则进行自动快照 158
7.1.2 用户执行SAVE或BGSAVE命令 158
7.1.3 执行FLUSHALL命令 159
7.1.4 执行复制时 159
7.1.5 快照原理 159
7.2 AOF方式 160
7.2.1 开启AOF 160
7.2.2 AOF的实现 161
7.2.3 同步硬盘数据 162
第8章 集群 165
8.1 复制 165
8.1.1 配置 166
8.1.2 原理 168
8.1.3 图结构 170
8.1.4 读写分离与一致性 171
8.1.5 从数据库持久化 171
8.1.6 无硬盘复制 171
8.1.7 增量复制 172
8.2 哨兵 173
8.2.1 什么是哨兵 173
8.2.2 马上上手 174
8.2.3 实现原理 177
8.2.4 哨兵的部署 180
8.3 集群 181
8.3.1 配置集群 181
8.3.2 节点的增加 185
8.3.3 插槽的分配 185
8.3.4 获取与插槽对应的节点 190
8.3.5 故障恢复 191
第9章 管理 193
9.1 安全 193
9.1.1 可信的环境 193
9.1.2 数据库密码 194
9.1.3 命名命令 194
9.2 通信协议 195
9.2.1 简单协议 195
9.2.2 统一请求协议 197
9.3 管理工具 197
9.3.1 redis-cli 198
9.3.2 phpRedisAdmin 199
9.3.3 Rdbtools 201
附录A Redis命令属性 203
A.1 REDIS_CMD_WRITE 203
A.2 REDIS_CMD_DENYOOM 205
A.3 REDIS_CMD_NOSCRIPT 206
A.4 REDIS_CMD_RANDOM 207
A.5 REDIS_CMD_SORT_FOR_SCRIPT 207
A.6 REDIS_CMD_LOADING 207
附录B 配置参数索引 209
附录C CRC16实现参考 211