Redis 核心技术与实战
蒋德钧
中科院计算所副研究员
81696 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 53 讲
开篇词 (1讲)
实践篇 (28讲)
Redis 核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

期中测试题 | 一套习题,测出你的掌握程度

Redis实现短视频信息需求
Redis主从集群缓冲区
Redis网络连接断开
问答题
选择题
转述学习方法
查漏补缺
记录知识点
国庆黄金周
测验内容
学习方法
期中周
测出掌握程度
期中测试题
文章

该思维导图由 AI 生成,仅供参考

你好,我是蒋德钧。
咱们的课程已经更新过半了,我看到很多同学一直在坚持学习,课程每次更新后,都会认真回答课后题,而且还会分享自己的思考和经验。但是,我也发现,最近有不少同学都掉队了,积累了很多节课都没有学习过。
从今天开始,我们就进入期中周了。我知道,很多同学平时确实比较忙,想等到有了大块的时间再来学习。所以,在刚开始设计课程时,我就特意设置了期中周。巧的是,我们的期中周刚好和国庆黄金周重合了。那么,现在,就是你赶上进度的好机会。
在开始做题之前,我想多说几句。
Redis 的知识点比较多,而且一旦涉及到性能优化、可靠性保证等需求时,我们就需要和进程、线程、内存管理、磁盘 IO、网络连接等计算机底层系统知识打交道。如果你不熟悉底层系统的知识,在学习 Redis 时,就需要进一步查资料。但是我们平时都很忙,可能会来不及查资料,过一段时间可能就忘了,再想学习时,就需要重新了解,学习成本比较高。
针对这个问题,我想给你分享一下我自己的学习方法。我会用一个 word 文档或者其他的笔记软件,把涉及到的知识点先记录下来。对于那些我没搞清楚的知识点,我会把它们标记为红色,表明这是一个 to-do 项。等我有空的时候,我就会把这个文档拿出来,挨个儿去查看那些标红的知识点,查找相关的资料,补上知识漏洞。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文是一篇关于期中测试题的文章,作者蒋德钧针对学习Redis的同学设计了一套测试题,以检验他们对Redis知识的掌握程度。文章首先介绍了期中周的重要性,鼓励学生抓住机会查漏补缺,快速提升实战能力。接着,作者分享了自己的学习方法,包括记录知识点、转述学习内容以及如何处理对技术点的掌握不牢固的问题。测试题包括选择题和问答题,涵盖了Redis的网络连接、主从集群数据同步、以及使用Redis实现短视频信息持久化等方面的知识点。作者鼓励学生认真回答问答题,并将在特定日期公布答案。整体而言,本文通过测试题的形式,帮助读者巩固和检验对Redis知识的掌握程度,同时提供了学习方法和解决方案设计的建议,对于学习Redis的读者具有一定的指导意义。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Redis 核心技术与实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(12)

  • 最新
  • 精选
  • sid
    假期是拉开差距的最好时间!!!
    2020-10-02
    23
  • 卫江
    1 对于redis来说,连接的建立是很普遍的操作,如果等待回复,可能造成不必要的内存使用问题。 2 复制缓存区用于保存全量复制期间的变化,如果全量复制太大,又有大量的修改,可能引发缓存溢出,造成主从复制中断,最严重的后果可能造成死循环,从服务器一直启动不了,且对于主的压力也很大。复制积压缓存区用于全量完成之后如果发生断线重连做的优化。为了控制它的大小,使用了环形队列,但是如果修改太频繁,会很快覆盖头部,在主从发生断线之后,就只能从头开始进行全量同步了 3 对于实用的数据结构,不是很清楚查询的需求,如果只是根据id进行查询的话,是可以使用string,不过string对象的空间利用率不是很高,所以也可以使用hash,控制hash的大小,把所有的数据分片到不同的小hash里面,保证内部使用压缩列表来实现,对于持久化方案,最好是rdb+aof,如果是老版本不支持,可以使用aof,因为是以读为主,修改少,自然产生的aof日志就小,最后是选择分片更多,每个主库数据更少肯定更好,就更不用说加上从库来保证更好的可靠性了,理论上来说,主库的内存占有肯定是越小越好的,这样最起码rdb,主从复制,io的压力更小,阻塞我们主线程的元素更少,同时分片更多,并发度也更好,所以不论从那个方面来说,分片越多,每个分片内存越小,都是好的
    2020-10-02
    6
  • William Ning
    答题得分:75 很多都开始遗忘,不清晰了。
    2022-04-28
    4
  • dfuru
    2. 复制缓冲区作用:在主库上对每个从库都维护一个缓冲区,主从在全量复制数据期间,缓存主机接收到写操作命令,等待全量同步完成后,再将复制缓冲区中的数据同步给从库执行。当复制缓冲区溢出后,主库和从库断开连接。 复制积压缓冲区,所有从库共享主库上的该环境缓冲区,在增量复制过程中,缓存主从断连期间主库接收到的写命令,当主从网络恢复后,从该缓冲区继续同步命令。若缓冲区满,新写入数据会覆盖旧数据,若旧数据尚未同步,则触发主从全量同步。 3. 使用hash类型保存数据,若单实例保存的可靠性方式:RDB(fork过程影响请求处理性能)+AOF(每秒写回磁盘,使用SSD) 使用Redis Cluster方案, 使用2台32G运行主从实例,每台存储20G数据,主库可处理读写请求,从库可分担读请求,从库作为主库的备份提高可靠性。 但是,主库存储20G数据,RDB持久化fork耗时长阻塞主线程,从库加收并加载RDB耗时长阻塞从库的读操作。 32G内存偏小,会出现内存紧张,发生Swap,严重影响处理读写请求效率。 使用10台8G,每两台构成主从。每个实例存储4G数据,主库可处理读写请求,从库分担读请求且可提高可靠性,每个实例4G,RDB生成对主机性能影响小,RDB传输、从库加载RDB很快完成降低对从库的阻塞,且可防止复制缓冲区溢出问题。
    2020-10-16
    4
  • 我不用网名
    题一: Redis不会等待客户端连接。客户端可以选择某种重试策略重连,服务端通过epoll处理相应的网络事件。 题二:复制缓冲区与特定客户端或从节点关联,用于服务端传输数据到客户端或从节点。积压缓冲区属于所有从节点,环装结构,Redis服务向里写数据,从节点读。 从节点读跟不上写节奏,会导致全量同步。 可增大缓冲区,降低全量同步概率。 至于影响? 前面关于缓冲惨案那一节,听着听着睡着了,抽空补起来。 题三:一类关联信息的存储,典型的对象信息,我肯定不假思索的选择hash类型存储。 key按视频id分段(比如: 1-5000,5000-10000)避免bigkey。暂时想不到有没有必要按前面课程"String为什么不香了?"设置参数,保证hash使用压缩列表? 单实例的持久化机制。 最开始做一次rdb,之后只使用aof,每秒刷盘。 主要面向读服务, aof写和重写,阻塞发生的概率会很低,在加上没有数据同步,迁移等压力,这种方式,我觉得可以满足业务要求。 关于使用2台32g或10台8g服务器。 如果是成长行业务,使用cluster方案肯定会更适合;就题中的场景,个人更倾向2台机器。结构,安装,维护简单,且能满足业务需要!
    2020-10-05
    1
  • Mr.蜜
    1.redis不会等待客户端重新连接,做客户端断开处理。如果redis等待客户端连接,会影响其他客户端连接的数据处理,从而影响性能。或者说,redis服务器会等待任何客户端的链接,而不单单只等待先前断开的客户端连接,按照epoll模型等待着客户端的连接并做accept和命令处理。 2.复制缓冲区是COW(写时复制)时,对RDB备份和主从数据同步的同时,还有写的操作的缓存。复制积压缓冲区是主从数据同步的环形缓冲区,是一个环形窗口机制,这样在增量同步时,主机可以知道需要同步多少数据给从机。 3.短视频属性信息,一般以K-V键值对数据,所以使用hashmap更合适(使用string+数据序列化,会使得数据的读取需要在客户端做,整存整取,如果发生多客户端写一个数据时,无法保证数据的安全性),这样可以获取单独的数据,也可以使用hgetall获取单个短视频的全量书信信息。在总量20GB的容量需求情况下,使用Redis Cluster更合适,这样保证单个实例在4G左右,保证单实例的响应速度;也保证了数据的安全性,在主从同步时,也不会因为数据量大,而长时间阻塞主机主线程。
    2020-10-03
    1
  • 胡鹏
    95, hhh。上完课,对 redis的理解深了不少。
    2023-11-08归属地:上海
  • 中间件-云原生
    60,及格万岁
    2023-10-19归属地:上海
  • 老大不小
    答: 第一题: 不会一直等。客户端连接服务端,在服务端会有一个buffer,一直等待的话,占用内存无法释放。一段时间的重连应该还是支持的。 第二题: 复制缓冲区:客户端,从库和主库之间都有复制缓冲区,单独存在。用来解决网络传输和处理速度不匹配的问题。 复制积压缓冲区:所以的从库和主库共用的,对应的有maset_offset和slave_offset,用于主从同步。还可判断主从offset之间的差距,如果比较大,可能会存在主从数据不一致的问题,此时限制客户端访问这台从库。 第三题: 我会用hashmap来存。单实例下持久化方式,考虑到数据量比较大,单独采用AOF,文件会很大,恢复数据也会很大,所以一定要采用RDB的方式。因为主要是读服务,还可以再使用AOF的方式保存数据。所以我会采用Mix的方式持久化数据。 我会选择10台8G的。原因如下:10台实例,肯定是集群,稳定性和扩展性好。并且每台实例上的内存较小(4G),这样在主从同步的时候,以及RDB fork线程的时间都会缩短。如果某台实例挂了,数据访问压力也可以平摊到9台实例上。
    2021-04-28
  • escray
    第一题:我认为 Redis 不会一直等待客户端,Redis 在网络连接这里,使用的应该是多路复用,如果客户端不发送连接,Redis 应该是不会等的。如果是发送了一般请求,然后连接断开,那么应该是有一个参数可以指定等待时间。 第二题:复制缓冲区是用于复制 RDB 文件,复制积压缓冲区是用于保存在同步 RDB 文件时,Redis 服务器上新的请求。 复制缓冲区的大小可能会影响到同步的快慢;复制积压缓冲区的大小可能会影响到在主从同步的时候,是否能够把新的修改请求同步到从库。 第三题:我会使用 Redis 的 Hash 数据类型来保存数据,短视频 ID 作为 key,其他的属性信息按照 key-value 的形式保存。如果是单个实例的话,那么采用 RDB + AOF 的方式持久化,就是周期性 RDB。 如果不是单实例,那么使用 10 台 8GB 云主机,这样的话可以避免因为实例过大引起的同步问题。10 台云主机,5 套主从库,在可靠性上也有一定的保障。
    2021-04-01
收起评论
显示
设置
留言
12
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部