gball个人知识库
首页
基础组件
基础知识
算法&设计模式
  • 操作手册
  • 数据库
  • 极客时间
  • 每日随笔
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
  • 画图工具 (opens new window)
关于
  • 网盘 (opens new window)
  • 分类
  • 标签
  • 归档
项目
GitHub (opens new window)

ggball

后端界的小学生
首页
基础组件
基础知识
算法&设计模式
  • 操作手册
  • 数据库
  • 极客时间
  • 每日随笔
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
  • 画图工具 (opens new window)
关于
  • 网盘 (opens new window)
  • 分类
  • 标签
  • 归档
项目
GitHub (opens new window)
  • 面试

  • 数据库

  • linux

  • node

  • tensorFlow

  • 基础组件

  • 基础知识

  • 算法与设计模式

  • 分布式

  • 疑难杂症

  • go学习之旅

  • 极客时间

    • 设计模式之美

    • Redis核心技术与实战

      • 开篇词丨这样学Redis,才能技高一筹
      • 基本架构:一个键值数据库包含什么?
      • 数据结构:快速的Redis有哪些慢操作?
      • 高性能IO模型:为什么单线程Redis能那么快?
      • AOF日志:宕机了,Redis如何避免数据丢失?
      • 内存快照:宕机后,Redis如何实现快速恢复?
      • 数据同步:主从库如何实现数据一致?
      • 哨兵机制:主库挂了,如何不间断服务?
      • 哨兵集群:哨兵挂了,主从库还能切换吗?
      • 切片集群:数据增多了,是该加内存还是加实例?
      • 第1~9讲课后思考题答案及常见问题答疑
      • “万金油”的String,为什么不好用了?
      • 有一亿个keys要统计,应该用哪种集合?
      • GEO是什么?还可以定义新的数据类型吗?
      • 如何在Redis中保存时间序列数据?
      • 消息队列的考验:Redis有哪些解决方案?
      • 异步机制:如何避免单线程模型的阻塞?
      • 为什么CPU结构也会影响Redis的性能?
      • 波动的响应延迟:如何应对变慢的Redis?(上)
      • 波动的响应延迟:如何应对变慢的Redis?(下)
      • 删除数据后,为什么内存占用率还是很高?
      • 缓冲区:一个可能引发“惨案”的地方
      • 第11~21讲课后思考题答案及常见问题答疑
      • 旁路缓存:Redis是如何工作的?
      • 替换策略:缓存满了怎么办?
      • 缓存异常(上):如何解决缓存和数据库的数据不一致问题?
      • 缓存异常(下):如何解决缓存雪崩、击穿、穿透难题?
      • 缓存被污染了,该怎么办?
      • Pika如何基于SSD实现大容量Redis?
      • 无锁的原子操作:Redis如何应对并发访问?
      • 如何使用Redis实现分布式锁?
      • 事务机制:Redis能实现ACID属性吗?
      • Redis主从同步与故障切换,有哪些坑?
      • 脑裂:一次奇怪的数据丢失
      • 第23~33讲课后思考题答案及常见问题答疑
      • Codis VS Redis Cluster:我该选择哪一个集群方案?
      • Redis支撑秒杀场景的关键技术和实践都有哪些?
      • 数据分布优化:如何应对数据倾斜?
      • 加餐(二)_ Kaito:我是如何学习Redis的?
      • 加餐(四)-Redis客户端如何与服务器端交换命令和数据?
      • 加餐(六)_ Redis的使用规范小建议
      • 加餐(一)_ 经典的Redis学习资料有哪些?
      • 加餐(三)-Kaito:我希望成为在压力中成长的人
      • 加餐(五)- Redis有哪些好用的运维工具?
      • 41 _ 第35~40讲课后思考题答案及常见问题答疑
      • 期中测试题-一套习题,测出你的掌握程度
      • 加餐(七) _ 从微博的Redis实践中,我们可以学到哪些经验?
      • 期中测试题答案-这些问题,你都答对了吗?
      • 结束语 _ 从学习Redis到向Redis学习
        • 向Redis单线程模式学习,专心致志做重要的事
        • 向Redis集群学习可扩展能力
        • 从做成一件事开始
        • 精选评论
      • 38 _ 通信开销:限制Redis Cluster规模的关键因素
      • 40 _ Redis的下一步:基于NVM内存的实践

结束语 _ 从学习Redis到向Redis学习

你好,我是蒋德钧。

这么快就到课程的尾声了,到了和你说再见的时候了。

在过去的 4 个多月时间里,我们掌握了 Redis 的各种关键技术和核心知识。在课程的最后,我想带你切换一个视角:如果说我们之前一直在学习 Redis 本身,那么今天,我们来看看能向 Redis 学到什么。

在聊这个“视角”之前,我想先问你一个问题:你有没有想过,学习技术究竟意味着什么呢?

大多数人人都会觉得,就是掌握具体的原理,进行实战,并且学习别人的经验,解决自己在实际工作中的问题。比如说,学习 Redis 时,我们会把它用在缓存、分布式锁、数据集群等业务场景中,这就需要我们掌握关键实践技巧、常见问题和应对方法,这也是我们课程的聚焦点。

但是,我认为,这只是学习技术的第一个层面。当我们对技术的认识和积累达到一定程度后,我们就应该“向技术致敬”。所谓的致敬,就是向技术学习,来解决我们在生活中遇到的问题。这是第二个层面。

这背后的道理其实非常朴素:每一项优秀技术都是一些精华思想的沉淀成果,向技术学习,其实就是向优秀的思想学习。

我一直很崇尚一个理念:一个优秀的计算机系统设计本身就包含了不少人生哲学。所以,接下来,我们就再往前迈一步,从 Redis 设计中总结一些做事方法。

# 向Redis单线程模式学习,专心致志做重要的事

Redis 的最大特点是快,这是 Redis 在设计之初就设立的目标。而能成为某项技术的高手、某个技术方向的大牛,通常是我们给自己设立的目标。Redis 实现“快”这个目标的关键机制就是单线程架构。单线程架构就给我们提供了一个很好的做事方式:专心致志做一件事,把事情做到极致,是达到目标的核心要素。

在 Redis 的设计中,主线程专门负责处理请求,而且会以最快的速度完成。对于其他会阻碍这个目标的事情(例如生成快照、删除、AOF 重写等),就想办法用异步的方式,或者是用后台线程来完成。在给你介绍 6.0 版本时,我还提到,Redis 特意把请求网络包读写和解析也从主线程中剥离出来了,这样主线程就可以更加“专注”地做请求处理了。

我认为,“单线程”思想是非常值得我们品味的。在确定目标以后,我们也可以采用“单线程模式”,把精力集中在核心目标上,竭尽全力做好这件事,同时合理安排自己的时间,主动避开干扰因素。

当我们沉浸在一件事上,并且做到极致时,距离成为大牛,也就不远了。

当然,我们说在一件事上做到极致,并不是说只盯着某一个知识点或某一项技术,而是指在一个技术方向上做到极致。

比如说,Redis 属于键值数据库,我们就可以给自己定个目标:精通主要的键值数据库。因此,我们不仅要扎实地掌握现有技术,还要持续关注最新的技术发展。这就要提到我们可以向 Redis 学习的第二点了:具备可扩展能力。

# 向Redis集群学习可扩展能力

在应用 Redis 时,我们会遇到数据量增长、负载压力增大的情况,但 Redis 都能轻松应对,这就是得益于它的可扩展集群机制:当数据容量增加时,Redis 会增加实例实现扩容;当读压力增加时,Redis 会增加从库,来分担压力。

Redis 的新特性在持续推出,新的存储硬件也在快速地发展,这些最新技术的发展,很可能就会改变 Redis 的关键机制和使用方法。所以,想要应对复杂的场景变化,我们也要像 Redis 集群一样,具备可扩展能力。毕竟,技术的迭代速度如此之快,各种需求也越来越复杂。如果只是专注于学习现有的技术知识,或者是基于目前的场景去苦心钻研,很可能会被时代快速地抛弃。

只有紧跟技术发展的步伐,具备解决各种突发问题的能力,才能成为真正的技术大牛。

怎么培养可扩展能力呢?很简单,随时随地记录新鲜的东西。这里的“新鲜”未必是指最新的内容,而是指你不了解的内容。当你的认知范围越来越大,你的可扩展能力自然就会越来越强。

说到这儿,我想跟你分享一个我的小习惯。我有一个小笔记本,会随身携带着,在看文章、参加技术会议,或是和别人聊天时,只要学到了新东西,我就会赶紧记下来,之后再专门找时间去搜索相关的资料,时不时地拿出来回顾一下。这个习惯,让我能够及时地掌握最新的技术,轻松地应对各种变化。

我们做技术的同学,通常习惯于脚踏实地地把事情做好,但是,也千万别忘了,脚踏实地的同时,也是需要“仰望星空”的。要把学习变成一种习惯,从为了应对问题的被动学习,到为了增强自己的可扩展性而主动学习,这个转变绝对可以让你的技术能力远超过其他人。

当然,Redis 的优秀设计思想还有很多,你还可以自己提炼总结下。我还想再跟你探讨的话题是,我们该怎么把向 Redis 学到的思想真正落地到实践中呢?

其实,道理也很简单:从做成一件事开始。在竭尽全力做成事情的过程当中,磨炼自己的专注力,锻炼自己的可扩展能力。

# 从做成一件事开始

我们常说“不积跬步,无以至千里”,这句话中的“跬步”,我把它解释为做成一件事。我们总是会做很多事,但是,很多时候,能够让我们真正得到提升的是把事做成。

对我来说,创作这门课完全是一次全新的尝试。在写作时,无论是思考内容的结构,确认具体的细节,还是连夜赶稿以保证按时更新,我都感受到了不少压力。但是,现在我回过头来看过去的半年,感到很欣慰,因为这事儿我做成了,而且有很多额外的收获。

其实,做成一件事的目标不分大小。它可以很小,比如学完两节课,也可以很大,比如花 3 个月时间把 Redis 源码读完。

最重要的是,一旦定好目标,我们就要尽全力把这件事做成。我们不可避免地会遇到各种困难,比如临时有其他的工作安排,抽不出时间,或者是遇到了不理解的内容,很难再学进去。但是,这就像爬山,爬到半山腰的时候,往往也是我们最累的时候。

我再跟你分享一下我自己的小故事。

在看 Redis 数据结构的源码时,我觉得非常困难。Redis 的数据类型非常多,每种数据类型还有不同的底层结构实现,而有的数据结构本身就设计得很复杂。

当时我差一点就决定放弃了,但是,我后来憋着一口气,说我一定要把事情做成。冷静下来之后,我进一步细分目标,每周搞定一个结构,先从原理上理解结构的设计,自己在白纸上推演一遍。然后,把每个结构的代码看一遍,同时自己也把关键部分编写一遍。毕竟,我们在看代码的时候,很容易想当然地跳过一些地方,只有自己一行行地去编写时,才会思考得更细致,理解得也更透彻。

攻克了“数据结构”这个难关之后,我发现,后面的就简单多了。甚至在遇到其他困难时,我也不再害怕了。

因为每一次把一件事做成,都会增强我们的自信心,提升我们的能力。随着我们做成的事越来越多,我们也就越来越接近山顶了,这时,你会真正地体会到“会当凌绝顶,一览众山小”的感觉。

好了,到这里,真的要和你说再见了。“此地一为别,孤蓬万里征”,这是李白送别友人时说的,比较忧伤。古代的通讯和交通没有那么便利,分别之后,好友只能是自己独自奋斗了。

但咱们不是。虽然课程结束了,但是这些内容会持续存在,你可以时不时地复习一下。如果你遇见了什么问题,也欢迎继续给我留言。

最后,我给你准备了一份结课问卷,希望你花 1 分钟时间填写一下,聊一聊你对这门课的看法和反馈,就有机会获得“Redis 快捷口令超大鼠标垫”和价值 99 元的极客时间课程阅码。期待你的畅所欲言。

图片

# 精选评论

点击查看

Kaito

历时 4 个月,这个专栏全程跟了下来,除了答疑篇之外的所有文章,每篇都在第一时间认真写留言、解答课后问题,坚持做了 4 个月,也算是把这件“小事”做到了极致,有始有终。

在写这最后一篇留言时,我也梳理了一下在这个专栏下留下的文字,所有留言 + 2篇加餐文章,输出共计近 6 万字!

写下这些文字的时间和地点各有不同,有早晚高峰的地铁上,有 996 回家的出租车上,有凌晨两三点的台灯下,有在医院守夜的病床旁...

也感谢极客时间这个平台,在这个专栏,除了学到了很多之前没接触到的内容之外,还被邀请写了加餐文章,同时还做了专栏内容的审稿和勘误工作...一路下来,学到很多,成长很多。

虽然专栏要结束了,但对于我来说是一个新的开始,在专栏更新期间,我建了一个 Redis 交流群,方便大家在学习过程中,遇到问题时可以帮大家答疑。现在这个群已经 200 多人了,每天都在讨论技术问题,讨论的内容质量也很高,没有沦落为水群,也算是小有成效。

这个群目前计划会一直维护下去,方便有需求的人继续学习专栏内容。想入群的同学可以加我微信(black-rye),也欢迎对技术有热情的同学,和我探讨技术问题~

最后,也算是在这里立一个 Flag 吧,我打算把这个专栏下的每篇留言,再梳理一遍,整理成文章发出来,把 Redis 常见的问题和不易理解的细节点,用简单易懂的方式讲出来,方便后面遇到类似问题的人学习,也欢迎大家监督我 :)
1
2
3
4
5
6
7
8
9
10
11
12
13

梦想歌


谢小路


Frank木风

好快,课程就结束了。大家江湖再见。
1

学毛毛学


Jianzeng

这么快就结束了吖,看的不过瘾
1

Lemon


东

结课了,这个专栏认真的追了几个月,有不少讲刷了不止一遍,每一课都用typora做了笔记。老师的专栏确实是用心了。包括画了无数的图。感谢!
1

蜗牛


tt

感谢老师!
1

新世界

老师的课程让我收获不小,谢谢老师近四个月的付出,虽然专栏结束了,但学习不能停止,准备二刷并整理形成自己的redis技术体系
1

zhou

极客时间上第一个全程跟完的课程,受益匪浅。当闭着眼睛回想这段时间学到了什么,想到了高性能、高可用、易扩展,然后各种数据结构、单线程、主从同步、哨兵、集群,再继续细化脑海中有点模糊了,虽然课程结束了,但还会继续重温。
1

#极客时间
上次更新: 2025/06/04, 15:06:15
期中测试题答案-这些问题,你都答对了吗?
38 _ 通信开销:限制Redis Cluster规模的关键因素

← 期中测试题答案-这些问题,你都答对了吗? 38 _ 通信开销:限制Redis Cluster规模的关键因素→

最近更新
01
AIIDE
03-07
02
githubActionCICD实战
03-07
03
windows安装Deep-Live-Cam教程
08-11
更多文章>
Theme by Vdoing
总访问量 次 | 总访客数 人
| Copyright © 2021-2025 ggball | 赣ICP备2021008769号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×

评论

  • 评论 ssss
  • 回复
  • 评论 ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
  • 回复
  • 评论 ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
  • 回复
×