Redis使用手册-黄健宏
- 书名: Redis使用手册
- 作者: 黄健宏
- 简介: 本书系统化介绍 Redis 命令及其应用场景,内容深入,图文并茂,巨细靡遗,是掌握 Redis 的案头必备参考书。本书主要分为三大部分,共20章。第一部分“数据结构与应用”介绍Redis最核心的九种数据结构,列举了操作这些数据结构的众多命令及其详细信息,并在其中穿插介绍了多个使用 Redis 命令构建应用序的示例。通过这些程序示例,读者可以进一步加深对命令的认识,并学会如何在实际中应用这些命令,从而达到学而致用的目的。第二部分“附加功能”介绍 Redis 在数据结构的基础上为用户提供的额外功能。其中包括数据库管理、自动过期功能、流水线与事务、Lua 脚本、持久化、发布与订阅、模块管理等。读者可以通过阅读这一部分来学会如何将 Redis 应用在更多场景中。第三部分“多机功能”介绍 Redis 的三项多机功能:复制、Sentinel 和集群。读者可以通过阅读这一部分来获得扩展 Redis 读写性能的相关知识,并根据自己的情况为 Redis 系统选择合适的扩展方式。
- 出版时间 2019-09-01 00:00:00
- ISBN: 9787111636526
- 分类: 计算机-数据库
- 出版社: 机械工业出版社
高亮划线
封面
版权信息
前言
第1章 引言
1.1 Redis简介
1.2 内容编排
1.3 目标读者
1.4 预备工作
1.5 执行命令
1.6 配置服务器
1.7 示例代码
1.8 版本说明
1.9 读者服务网站
1.10 启程
01第一部分 数据结构与应用
2.1 SET:为字符串键设置值
2.2 GET:获取字符串键的值
2.3 GETSET:获取旧值并设置新值
示例:缓存
示例:锁
2.4 MSET:一次为多个字符串键设置值
2.5 MGET:一次获取多个字符串键的值
2.6 MSETNX:只在键不存在的情况下,一次为多个字符串键设置值
- 📌 MSETNX与MSET的主要区别在于,MSETNX只会在所有给定键都不存在的情况下对键进行设置,而不会像MSET那样直接覆盖键已有的值:如果在给定键当中,即使有一个键已经有值了,那么MSETNX命令也会放弃对所有给定键的设置操作 ^23-565-679
- ⏱ 2024-03-08 10:45:06
示例:存储文章信息
2.7 STRLEN:获取字符串值的字节长度
- 📌 通过对字符串键执行STRLEN命令,用户可以取得字符串键存储的值的字节长度: ^25-432-470
- ⏱ 2024-03-08 10:46:39
2.8 字符串值的索引
2.9 GETRANGE:获取字符串值指定索引范围上的内容
- 📌 GETRANGE命令接受的是闭区间索引范围,也就是说,位于start索引和end索引上的值也会被包含在命令返回的内容当中。 ^27-568-629
- ⏱ 2024-03-08 10:48:09
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.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.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 基本特性
-
📌 Redis集群会将整个数据库空间划分为16384个槽(slot)来实现数据分片(sharding),而集群中的各个主节点则会分别负责处理其中的一部分槽。 ^265-1362-1438
- ⏱ 2024-03-08 08:15:12
-
📌 最重要的是,无论是向集群添加新节点还是从集群中移除已有节点,整个重分片(reshard)过程都可以在线进行,Redis集群无须因此而停机。 ^265-1925-1994
- ⏱ 2024-03-08 08:16:10