期中测试题-一套习题,测出你的掌握程度
欢迎来到我的 ChatGPT 中转站,极具性价比,为付费不方便的朋友提供便利,有需求的可以添加左侧 QQ 二维码,另外,邀请新用户能获取余额哦!最后说一句,那啥:请自觉遵守《生成式人工智能服务管理暂行办法》。
# 选择题
# 单选题
- Redis 的 Streams 数据类型可以用来实现消息队列,关于 Streams,下列哪个描述是不正确的?
- Streams 可以为消息自动生成全局唯一 ID
- Streams 会自动留存消息,直到消费者使用 XACK 确认后,再删除消息
- Streams 支持阻塞式消息读取
- Streams 提供的消费组模式,同一个消费组内的消费者可以同时消费同一条消息
- 在 Redis 运行的过程中,运维人员通过 info memory 命令,查看到 mem fragmentation ratio 的值等于 2,此时,Redis 的内存使用情况是怎样的?
- 内存使用中存在较为严重的内存碎片
- 内存空间不够,可能已经发生了 swap
- 内存使用正常,有少量内存碎片
- 内存非常充足,可以保存更多的数据
- 在 Redis 中,默认的内存分配器使用的是 jemalloc 当 Redis 想要分配 23 字节的空间时,jemalloc 实际会分配多大空间?
- 23
- 24
- 32
- 64
- Redis 使用 RDB 机制创建快照,关于 RDB 机制,下面的描述哪个是错误的?
- 使用 save 命令生成 RDB 快照时,是在主线程中执行的,会阻塞主线程
- RDB 文件是 Redis 实例的镜像,用 RDB 文件恢复实例时,直接把 RDB 文件加载到内存,就可以快速恢复了
- 和 AOF 文件相比,RDB 文件更小一点
- 只使用 bgsave 命令创建 RDB 快照时,能处理读请求,写请求操作会被阻塞
- Redis 使用 AOF 机制保存数据操作时,可以采用不同的写回策略。当需要有一定的数据可靠性,同时也不能对 Redis 实例造成较大阻塞的话,应该选择以下哪和写回策略?
- always
- everysec
- no
- yes
- 现在,有一个 Redis 实例正在线上运行,它使用 Hash 类型保存了一个 key 为 device 的 Hash 集合,集合中保存了 500 万条记录。在这些记录中,有 20 万条记录的 key 是以 “redis” 开头的,现在想把这些记录读取出来,应该采用以下哪些命令?
- KEYS
- SCAN
- HSCAN
- SSCAN
- 在主从集群中,当主库收到从库发送的 psync ? -1 命令时,从库希望主库执行的操作是以下哪一项?
- 进行增量复制
- 结束数据复制操作
- 断开网络连接
- 进行全量复制
- 关于哨兵机制,下面的哪个描述是正确的?
- 哨兵是一个运行在特定模式下的 Redis 实例,也可以服务请求
- 哨兵提供 pub/sub 功能
- 哨兵只通过心跳监听主库的运行状态
- down-after-milliseconds 是哨兵用来判断主库客观下线的心跳新连闻值
- 在使用哨兵机制对发生故障的主从集群进行主从库切换时,会涉及:
(1) 主库被判断为主观下线
(2) 主库被判断为客观下线
(3) 确定新主库:
(4) 选举哨兵 Leader;
(5) 主从库实际切换
关于这些事件的发生顺序,以下哪个选项的描述是正确的?- (1)->(2)->(3)->(4)->(5)
- (2)->(1)->(3)->(4)->(5)
- (1)->(2)->(4)->(3)->(5)
- (2)->(1)->(4)->(3)->(5)
- 在一个由 5 个哨兵组成的哨兵集群中,配置文件中的 guorum 值配置为 4,那么,当有哨兵发现主节点故障开始进行 Leader 选举时,这个哨兵害要获得几张赞成票,才能成功地成为 Leader?
- 2
- 3
- 4
- 5
- 在使用 Redis Cluster 时,如果客户端发送操作请求后,收到了 MOVED 命令,此时,Redis Cluster 发生了以下哪和情况?
- 请求的数据在 Cluster 中已经被删除
- 请求数据所在的哈希槽正在往其他实例迁移
- 请求数据所在的哈希槽已经迁移到了其他实例
- 请求的数据正在持久化保存
- 在 Redis 的诸多数据类型中,以下哪和数据类型允许插入重复的元素?
- HyperLogLog
- List
- Set
- Sorted Set
- Redis 数据库是将下列哪种数据结构作为全局数据结构,来保存每一对键值对?
- 数组
- 哈希表
- 跳表
- 双向链表
- 在 Redis 的主从库集群中,如果主库宕机了,以下哪个机制可以让 Redis 实现自动的主从库切换?
- AOF 重写机制
- RDB 机制
- 切片机制
- 哨兵机制
- 以下哪个功能是由 Redis 主线程完成的?
- 键值对读写
- UNLINK 操作
- 生成 RDB 快照
- AOF 重写
# 多选题
- 以下哪些情况会引起 Redis 的主线程阻塞?
- 在 Redis 3.0 中,删除一个 100 万元素的 Set 集合
- AOF 写回策略配置为 everysec,同时 no-appendfsync-on-rewrite 设置为 no
- 200 万个键值对同时过期
- 一个服务读为主负载的 Redis 实例已保存的数据量为 1GB,正在创建 RDB 快照
- RDB 和 AOF 是 Redis 使用的两和持久化机制,关于这两和机制,下面的哪些描述是正确的?
- 使用 RDB 进行实例恢复的速度,要比使用 AOF 进行恢复的速度快
- RDB 的生成和 AOF 的日志记录都是通过子进程来完成的
- AOF 文件记录的操作日志过多时,为了避免文件过大,需要手动删除失效的操作日志
- Redis 4.0 版本中可以使用 RDB 做快照,同时使用 AOF 记录两次快照间的操作日志
- 我们可以使用 Hash 和 Sorted Set 组合来保存时间序列数据,以下哪些功能可以使用这种方式直接在 Redis 实例上完成?
- 计算某个时间范围内的数据最大值
- 查询某个时刻的数据
- 查询某个时间范围内的所有数据
- 查询最新时刻的数据
- Redis 的 Hash 数据类型,是采用以下哪两种结构作为它的底层实现的?
- 整数数组
- 双向链表
- 哈希表
- 压缩列表
- 关于 Redis Cluster,面哪个描述是止确的?
- Redis Cluster 一共有 16384 个哈希槽
- 使用 Redis Cluster 时,客户端不用记录哈希槽的任何信息,可以直接通过哈希计算,确定键值对在哪个实例
- Redis Cluster 属于可扩展集群,主要用途是让 Redis 数据库能够保存更多数据
- Redis Cluster 中的实例只能通过持久化机制进行可靠性保证
# 问答题
# 第一题
Redis 在接收多个网络客户端发送的请求操作时,如果有一个客户端和 Redis 的网络连接断开了,Redis 会一直等待该客户端恢复连接吗?为什么?
# 第二题
Redis 的主从集群可以提升数据可靠性,主节点在和从节点进行数据同步时,会使用两个缓冲区:复制缓冲区和复制积压缓冲区,这两个缓冲区的作用各是什么?会对 Redis 主从同步产生什么影响吗?
# 第三题
假设在业务场景中,我们有 20GB 的短视频属性信息(包括短视频 ID、短视频基本信息,例如短视频作者、创建时间等)要持久化保存,并且线上负载以读为主,需要能快速查询到这些短视频信息。
现在,我们想使用 Redis 来实现这个需求,请你来设计一个解决方案。我来提几个问题,你可以思考下。
首先,你会用 Redis 的什么数据类型来保存数据?如果我们只用单个实例来运行的话,你会采用什么样的持久化方案来保证数据的可靠性?
其次,如果不使用单实例运行,我们有两个备选方案:一个是用两台 32GB 内存的云主机来运行主从两个 Redis 实例;另一个是用 10 台 8GB 的云主机来运行 Redis
Cluster,每两台云主机分别运行一个 Redis 实例主库和从库,分别保存 4GB 数据,你会用哪种方案呢?请聊一聊你的想法。
上次更新: 2025/04/12, 05:37:39