低空略过 Redis 的学习,才理解底层的难处
以为看懂了五种数据结构就是会了 Redis,直到集群、哨兵和 IO 多路复用告诉我:不是 Redis 难,是我前面的路没走完。
刚开始学 Redis 的时候,学了五种数据结构,看了操作命令,GUI 客户端点一下就跑通了,心里就一个想法:这不就跟 MySQL 差不多吗?有啥难的。

甚至还在想,这些命令有没有必要一个个背,反正有工具可以查。
那时候的感觉就是——好像掌握了什么,又好像什么都没掌握。
我第一个正经项目是用 Spring Boot 写的员工管理系统。三层架构、RESTful API,跑通之后还挺有成就感的,还特意把朋友的头像上传到我的界面上,给他安排了个极低工资的职位截个图发给他看——纯粹是为了跟朋友显摆:"看,我都会写网页了,你们还在学 Java 基础呢。"
那时候我对并发的认知基本等于零,觉得那是大公司的事情,是专门搞底层的人要考虑的问题,跟我一个写 CRUD 的没关系。说白了,我以为代码能跑起来就是学会了。
学 Redis 的初衷挺现实的——Java 后端绕不开,面试老考,那就学呗。当时对它的第一印象就是:验证码过期机制可以用它实现。
前面部分学下来,五种数据结构、增删改查的命令照着文档敲了一遍,GUI 点几下就能看到数据,感觉也就那样。比 MySQL 多了一些奇怪的数据结构,但慢慢看总能看懂。

现在回头看,那时候以为自己"看懂"了,大概只是看懂了皮毛。
真正的转折,是从深入原理开始学的。
持久化(RDB/AOF)、过期 Key 怎么处理,这些虽然有点绕,但看几遍能理清楚。直到看到内存淘汰机制和高可用架构。
集群模式和哨兵模式,人直接麻了。主从节点复制、分片算法、16384 个 slot 怎么分布……之前学的那些东西到这里完全接不上。查了好多资料才勉强理解个大概,那种感觉就像你一直在平地走路,突然面前出现了一座山,而且你还没有登山装备。
然后是 IO 多路复用。epoll、网络 IO、磁盘 IO,这些名词一波接一波地冒出来。第一次看的时候是真的懵——一个线程怎么就能处理上千个连接?select 和 epoll 有什么区别?Redis 说是单线程,那为什么还能这么快?
被唬得一愣一愣的,完全不知道自己缺了什么。后来查资料、看视频,才慢慢意识到:这不是 Redis 难,是我前面的路没走完。
我现在才大一,计算机组成原理、数据结构、操作系统这些课,一门都没系统学过。先学的 JavaWeb,先碰的 Spring Boot,先玩的 Redis。
很多名词只是听过,没有真正理解过。比如我知道 epoll 很厉害,但不知道为什么厉害;我知道内存淘汰有 LRU,但不知道 Redis 是怎么近似实现的;我知道 Cluster 有分片,但不知道数据是怎么均匀分布的。
这个学习过程逼着我边学边补——一边啃 Redis 的原理,一边回头查操作系统和网络的基础概念。说实话挺累的,但也挺有意思的,像是拼图一样,一块一块把缺的东西补上。
以前觉得"代码能跑就行",现在发现跑通了不知道原理,真出了问题连排查的方向都没有。
学完 Redis 之后,有一个认知转变特别明显。以前理解的"快",是秒级别的——接口响应 200ms 算快,1 秒以内都能接受。现在才知道,真正的性能差异是在纳秒级的。
内存访问和磁盘访问差了几个数量级。缓存命中和缓存穿透,对数据库的压力天差地别。一个错误的 Key 设计,可能让整个系统在流量高峰时直接崩掉。
这时候才真正感受到,"高并发"这四个字背后是什么——不是代码写得有多花哨,而是你对系统的每一个环节有多了解。
如果非要总结这一趟学了什么,大概有几个变化吧。
对数据库的理解不再是"能存数据就行"了。以前觉得 MySQL 能跑就够,现在知道不同场景要用不同的存储方案,各有各的定位。
开始关注数据类型的设计。以前写代码就是按字段建表,现在会思考:这个用 String 还是 Hash 存更合适?这个 Key 要不要加 TTL?这个 Value 会不会太大?
安全意识强了不少。Redis 里一个 keys * 扫全量 key,在生产环境能直接把服务拖垮。以前觉得这种操作无所谓,现在知道每一个命令都可能成为事故的导火索。
不知道有没有"一年前"可以回去——毕竟我才大一嘛。
但如果真的有,我想对自己说:别急,先把基础打牢。那些看起来以后才需要的东西,其实是所有进阶学习的地基。你现在绕过的,总有一天会回来找你。
我现在准备慢慢补数据结构了,虽然慢,但至少方向是对的。
学完 Redis 之后,对找实习这件事的感觉挺复杂的。一方面觉得自己能啃下这么复杂的主题,学习能力应该还行;另一方面发现不懂的东西比已知的多得多,紧迫感也更强了。
接下来大概的方向:
- 补数据结构基础
- 继续啃 Redis 的底层原理
- 操作系统和网络提前看一点(虽然课还没开)
- 把 Spring Boot 里高并发相关的知识补齐
这趟学习最大的感受:你以为学会了,撞上一堵墙,回头补基础,再往上走一步,又发现更高的墙。
但这也恰恰是最有意思的地方。
如果你也在学 Redis,如果你也曾经觉得"也就那样",那么有一天你会像我一样,在某一个知识点面前停下来,然后意识到:
原来我之前的"学会",只是低空略过。