封面
版权信息
前言
第1章 引言
1.1 Redis简介
1.2 内容编排
1.3 目标读者
1.4 预备工作
1.5 执行命令
1.6 配置服务器
1.7 示例代码
1.8 版本说明
1.9 读者服务网站
1.10 启程
01第一部分 数据结构与应用
第2章 字符串
2.1 SET:为字符串键设置值
2.2 GET:获取字符串键的值
2.3 GETSET:获取旧值并设置新值
示例:缓存
示例:锁
2.4 MSET:一次为多个字符串键设置值
2.5 MGET:一次获取多个字符串键的值
2.6 MSETNX:只在键不存在的情况下,一次为多个字符串键设置值
示例:存储文章信息
2.7 STRLEN:获取字符串值的字节长度
2.8 字符串值的索引
2.9 GETRANGE:获取字符串值指定索引范围上的内容
2.10 SETRANGE:对字符串值的指定索引范围进行设置
示例:给文章存储程序加上文章长度计数功能和文章预览功能
2.11 APPEND:追加新内容到值的末尾
示例:存储日志
2.12 使用字符串键存储数字值
2.13 INCRBY、DECRBY:对整数值执行加法操作和减法操作
2.14 INCR、DECR:对整数值执行加1操作和减1操作
2.15 INCRBYFLOAT:对数字值执行浮点数加法操作
示例:ID生成器
示例:计数器
示例:限速器
2.16 重点回顾
第3章 散列
3.1 散列简介
3.2 HSET:为字段设置值
3.3 HSETNX:只在字段不存在的情况下为它设置值
3.4 HGET:获取字段的值
示例:实现短网址生成程序
3.5 HINCRBY:对字段存储的整数值执行加法或减法操作
3.6 HINCRBYFLOAT:对字段存储的数字值执行浮点数加法或减法操作
示例:使用散列键重新实现计数器
3.7 HSTRLEN:获取字段值的字节长度
3.8 HEXISTS:检查字段是否存在
3.9 HDEL:删除字段
3.10 HLEN:获取散列包含的字段数量
示例:实现用户登录会话
3.11 HMSET:一次为多个字段设置值
3.12 HMGET:一次获取多个字段的值
3.13 HKEYS、HVALS、HGETALL:获取所有字段、所有值、所有字段和值
示例:存储图数据
示例:使用散列键重新实现文章存储程序
3.14 散列与字符串
3.15 重点回顾
第4章 列表
4.1 LPUSH:将元素推入列表左端
4.2 RPUSH:将元素推入列表右端
4.3 LPUSHX、RPUSHX:只对已存在的列表执行推入操作
4.4 LPOP:弹出列表最左端的元素
4.5 RPOP:弹出列表最右端的元素
4.6 RPOPLPUSH:将右端弹出的元素推入左端
示例:先进先出队列
4.7 LLEN:获取列表的长度
4.8 LINDEX:获取指定索引上的元素
4.9 LRANGE:获取指定索引范围上的元素
示例:分页
4.10 LSET:为指定索引设置新元素
4.11 LINSERT:将元素插入列表
4.12 LTRIM:修剪列表
4.13 LREM:从列表中移除指定元素
示例:待办事项列表
4.14 BLPOP:阻塞式左端弹出操作
4.15 BRPOP:阻塞式右端弹出操作
4.16 BRPOPLPUSH:阻塞式弹出并推入操作
示例:带有阻塞功能的消息队列
4.17 重点回顾
第5章 集合
5.1 SADD:将元素添加到集合
5.2 SREM:从集合中移除元素
5.3 SMOVE:将元素从一个集合移动到另一个集合
5.4 SMEMBERS:获取集合包含的所有元素
5.5 SCARD:获取集合包含的元素数量
5.6 SISMEMBER:检查给定元素是否存在于集合
示例:唯一计数器
示例:打标签
示例:点赞
示例:投票
示例:社交关系
5.7 SRANDMEMBER:随机获取集合中的元素
5.8 SPOP:随机地从集合中移除指定数量的元素
示例:抽奖
5.9 SINTER、SINTERSTORE:对集合执行交集计算
5.10 SUNION、SUNIONSTORE:对集合执行并集计算
5.11 SDIFF、SDIFFSTORE:对集合执行差集计算
示例:共同关注与推荐关注
示例:使用反向索引构建商品筛选器
5.12 重点回顾
第6章 有序集合
6.1 ZADD:添加或更新成员
6.2 ZREM:移除指定的成员
6.3 ZSCORE:获取成员的分值
6.4 ZINCRBY:对成员的分值执行自增或自减操作
6.5 ZCARD:获取有序集合的大小
6.6 ZRANK、ZREVRANK:获取成员在有序集合中的排名
6.7 ZRANGE、ZREVRANGE:获取指定索引范围内的成员
示例:排行榜
6.8 ZRANGEBYSCORE、ZREVRANGEBYSCORE:获取指定分值范围内的成员
6.9 ZCOUNT:统计指定分值范围内的成员数量
示例:时间线
6.10 ZREMRANGEBYRANK:移除指定排名范围内的成员
6.11 ZREMRANGEBYSCORE:移除指定分值范围内的成员
6.12 ZUNIONSTORE、ZINTERSTORE:有序集合的并集运算和交集运算
示例:商品推荐
6.13 ZRANGEBYLEX、ZREVRANGEBYLEX:返回指定字典序范围内的成员
6.14 ZLEXCOUNT:统计位于字典序指定范围内的成员数量
6.15 ZREMRANGEBYLEX:移除位于字典序指定范围内的成员
示例:自动补全
6.16 ZPOPMAX、ZPOPMIN:弹出分值最高和最低的成员
6.17 BZPOPMAX、BZPOPMIN:阻塞式最大/最小元素弹出操作
6.18 重点回顾
第7章 HyperLogLog
7.1 HyperLogLog简介
7.2 PFADD:对集合元素进行计数
7.3 PFCOUNT:返回集合的近似基数
示例:优化唯一计数器
示例:检测重复信息
7.4 PFMERGE:计算多个HyperLogLog的并集
示例:实现每周/月度/年度计数器
7.5 重点回顾
第8章 位图
8.1 SETBIT:设置二进制位的值
8.2 GETBIT:获取二进制位的值
8.3 BITCOUNT:统计被设置的二进制位数量
示例:用户行为记录器
8.4 BITPOS:查找第一个指定的二进制位值
8.5 BITOP:执行二进制位运算
示例:0-1矩阵
8.6 BITFIELD:在位图中存储整数值
示例:紧凑计数器
8.7 使用字符串命令对位图进行操作
8.8 重点回顾
第9章 地理坐标
9.1 GEOADD:存储坐标
9.2 GEOPOS:获取指定位置的坐标
9.3 GEODIST:计算两个位置之间的直线距离
示例:具有基本功能的用户地理位置程序
9.4 GEORADIUS:查找指定坐标半径范围内的其他位置
9.5 GEORADIUSBYMEMBER:查找指定位置半径范围内的其他位置
示例:查找附近用户
9.6 GEOHASH:获取指定位置的Geohash值
9.7 使用有序集合命令操作GEO数据
9.8 重点回顾
第10章 流
10.1 XADD:追加新元素到流的末尾
10.2 XTRIM:对流进行修剪
10.3 XDEL:移除指定元素
10.4 XLEN:获取流包含的元素数量
10.5 XRANGE、XREVRANGE:访问流中元素
10.6 XREAD:以阻塞或非阻塞方式获取流元素
示例:消息队列
10.7 消费者组
10.8 XGROUP:管理消费者组
10.9 XREADGROUP:读取消费者组中的消息
10.10 XPENDING:显示待处理消息的相关信息
10.11 XACK:将消息标记为“已处理”
10.12 XCLAIM:转移消息的归属权
10.13 XINFO:查看流和消费者组的相关信息
示例:为消息队列提供消费者组功能
10.14 重点回顾
02第二部分 附加功能
第11章 数据库
11.1 SELECT:切换至指定的数据库
11.2 KEYS:获取所有与给定匹配符相匹配的键
11.3 SCAN:以渐进方式迭代数据库中的键
示例:构建数据库迭代器
11.4 RANDOMKEY:随机返回一个键
11.5 SORT:对键的值进行排序
11.6 EXISTS:检查给定键是否存在
11.7 DBSIZE:获取数据库包含的键值对数量
11.8 TYPE:查看键的类型
示例:数据库取样程序
11.9 RENAME、RENAMENX:修改键名
11.10 MOVE:将给定的键移动到另一个数据库
11.11 DEL:移除指定的键
11.12 UNLINK:以异步方式移除指定的键
11.13 FLUSHDB:清空当前数据库
11.14 FLUSHALL:清空所有数据库
11.15 SWAPDB:互换数据库
示例:使用SWAPDB命令实行在线替换数据库
11.16 重点回顾
第12章 自动过期
12.1 EXPIRE、PEXPIRE:设置生存时间
示例:带有自动移除特性的缓存程序
12.2 SET命令的EX选项和PX选项
示例:带有自动释放特性的锁
12.3 EXPIREAT、PEXPIREAT:设置过期时间
12.4 TTL、PTTL:获取键的剩余生存时间
示例:自动过期的登录会话
示例:自动淘汰冷门数据
12.5 重点回顾
第13章 流水线与事务
13.1 流水线
示例:使用流水线优化随机键创建程序
13.2 事务
示例:实现mlpop()函数
13.3 带有乐观锁的事务
示例:带有身份验证功能的锁
示例:带有身份验证功能的计数信号量
13.4 重点回顾
第14章 Lua脚本
14.1 EVAL:执行脚本
示例:使用脚本重新实现带有身份验证功能的锁
示例:实现LPOPRPUSH命令
14.2 SCRIPT LOAD和EVALSHA:缓存并执行脚本
14.3 脚本管理
14.4 内置函数库
14.5 脚本调试
14.6 重点回顾
第15章 持久化
15.1 RDB持久化
15.2 AOF持久化
15.3 RDB-AOF混合持久化
15.4 同时使用RDB持久化和AOF持久化
15.5 无持久化
15.6 SHUTDOWN:关闭服务器
15.7 重点回顾
第16章 发布与订阅
16.1 PUBLISH:向频道发送消息
16.2 SUBSCRIBE:订阅频道
16.3 UNSUBSCRIBE:退订频道
16.4 PSUBSCRIBE:订阅模式
16.5 PUNSUBSCRIBE:退订模式
16.6 PUBSUB:查看发布与订阅的相关信息
示例:广播系统
16.7 重点回顾
第17章 模块
17.1 模块的管理
17.2 ReJSON模块
17.3 RediSQL模块
17.4 RediSearch模块
17.5 重点回顾
03第三部分 多机功能
第18章 复制
18.1 REPLICAOF:将服务器设置为从服务器
18.2 ROLE:查看服务器的角色
18.3 数据同步
18.4 无须硬盘的复制
18.5 降低数据不一致情况出现的概率
18.6 可写的从服务器
示例:使用从服务器处理复杂计算操作
18.7 脚本复制
18.8 重点回顾
第19章 Sentinel
19.1 启动Sentinel
19.2 Sentinel网络
19.3 Sentinel管理命令
19.4 在线配置Sentinel
示例:使用redis-py管理Sentinel
19.5 重点回顾
第20章 集群
20.1 基本特性
20.2 搭建集群
示例:使用客户端连接集群
20.3 散列标签
20.4 打开/关闭从节点的读命令执行权限
20.5 集群管理工具redis-cli
20.6 集群管理命令
20.7 槽管理命令
20.8 重点回顾
附录A Redis安装方法
A1.免安装试运行
A2.在macOS上安装
A3.在Linux上安装
A4.在Windows上安装
附录B redis-py安装方法
附录C Redis命令索引表
更新时间:2019-10-22 16:13:47