CppGuide社区 CppGuide社区
首页
  • 🔥最新谷歌C++风格指南(含C++17/20)
  • 🔥C++17详解
  • 🔥C++20完全指南
  • 🔥C++23快速入门
🔥C++面试
  • 第1章 C++ 惯用法与Modern C++篇
  • 第2章 C++开发工具与调试进阶
  • 第3章 C++多线程编程从入门到进阶
  • 第4章 C++网络编程重难点解析
  • 第5章 网络通信故障排查常用命令
  • 第6章 网络通信协议设计
  • 第7章 高性能服务结构设计
  • 第8章 Redis网络通信模块源码分析
  • 第9章 服务其他模块设计
  • 🚀 全部章节.pdf 下载 (opens new window)
  • 🔥C++游戏编程入门(零基础学C++)
  • 🔥使用C++17从零开发一个调试器 (opens new window)
  • 🔥使用C++20从零构建一个完整的低延迟交易系统 (opens new window)
  • 🔥使用C++从零写一个C语言编译器 (opens new window)
  • 🔥从零用C语言写一个Redis
  • leveldb源码分析
  • libevent源码分析
  • Memcached源码分析
  • TeamTalk源码分析
  • 优质源码分享 (opens new window)
  • 🔥远程控制软件gh0st源码分析
  • 🔥Windows 10系统编程
  • 🔥Linux 5.x内核开发与调试 完全指南 (opens new window)
  • TCP源码实现超详细注释版.pdf (opens new window)
  • 高效Go并发编程
  • Go性能调优
  • Go项目架构设计
  • 🔥使用Go从零开发一个数据库
  • 🔥使用Go从零开发一个编译器 (opens new window)
  • 🔥使用Go从零开发一个解释器 (opens new window)
Rust编程指南
  • SQL零基础指南
  • MySQL开发与调试指南
GitHub (opens new window)
首页
  • 🔥最新谷歌C++风格指南(含C++17/20)
  • 🔥C++17详解
  • 🔥C++20完全指南
  • 🔥C++23快速入门
🔥C++面试
  • 第1章 C++ 惯用法与Modern C++篇
  • 第2章 C++开发工具与调试进阶
  • 第3章 C++多线程编程从入门到进阶
  • 第4章 C++网络编程重难点解析
  • 第5章 网络通信故障排查常用命令
  • 第6章 网络通信协议设计
  • 第7章 高性能服务结构设计
  • 第8章 Redis网络通信模块源码分析
  • 第9章 服务其他模块设计
  • 🚀 全部章节.pdf 下载 (opens new window)
  • 🔥C++游戏编程入门(零基础学C++)
  • 🔥使用C++17从零开发一个调试器 (opens new window)
  • 🔥使用C++20从零构建一个完整的低延迟交易系统 (opens new window)
  • 🔥使用C++从零写一个C语言编译器 (opens new window)
  • 🔥从零用C语言写一个Redis
  • leveldb源码分析
  • libevent源码分析
  • Memcached源码分析
  • TeamTalk源码分析
  • 优质源码分享 (opens new window)
  • 🔥远程控制软件gh0st源码分析
  • 🔥Windows 10系统编程
  • 🔥Linux 5.x内核开发与调试 完全指南 (opens new window)
  • TCP源码实现超详细注释版.pdf (opens new window)
  • 高效Go并发编程
  • Go性能调优
  • Go项目架构设计
  • 🔥使用Go从零开发一个数据库
  • 🔥使用Go从零开发一个编译器 (opens new window)
  • 🔥使用Go从零开发一个解释器 (opens new window)
Rust编程指南
  • SQL零基础指南
  • MySQL开发与调试指南
GitHub (opens new window)
  • 从零用C语言写一个Redis 引言
    • 02. 套接字入门
    • 03. 简易服务器/客户端
    • 04. 协议解析
    • 05. 事件循环与非阻塞I/O
    • 06. 事件循环的实现
    • 07. 基础服务器:实现get、set、del功能
    • 08. 数据结构:哈希表
    • 09. 数据序列化
    • 10. AVL树:实现与测试
    • 11. AVL树和有序集合
    • 12. 事件循环和定时器
    • 13. 堆数据结构和生存时间(TTL)
    • 14. 线程池与异步任务
    目录

    从零用C语言写一个Redis 引言

    # 从零用C语言写一个Redis 引言

    Page Views Count (opens new window)

    # 这个专栏到底将什么?

    这个专栏可太有意思啦,它要带着你一步步搭建一个类似Redis的服务器!这就好比是一本“网络编程+数据结构C语言实战秘籍”,带你一路“升级打怪”,直接把你从“小白”变成“大神”!

    # 学习这个专栏有什么用处?

    Redis那在现代计算界可是“大神级”的存在,历经各种考验,稳得一批。想搭建这么个项目,需要的知识比普通应用开发那可高深太多啦!对咱们搞软件开发的来说,从这类项目里“取经”,就像找到了快速升级技能的“隐藏副本”。

    为啥说Redis是个超棒的学习目标呢?因为它一把抓住了软件工程里两个超关键的“宝藏”:网络编程和数据结构。

    • 市面上讲套接字API(Socket API)或者高级库的教程多得像天上的星星,但网络编程可没那么简单,可不是只会调用API或者库就万事大吉啦!像事件循环、协议、定时器这些核心概念,那都是网络编程的“内功心法”,这本书会掰开了、揉碎了给你讲清楚。要是你没把这些吃透,就算在应用里用着高级网络库或者框架,说不定啥时候就“翻车”了,到时候哭都没地儿哭!
    • 好多人都在课本上学过基本的数据结构,觉得自己已经懂了?大错特错!实际项目里的数据结构,那些弯弯绕绕的“小心机”可多着呢,课本里根本不会讲。在真实的项目环境(特别是C语言环境)里,学习数据结构的“实战用法”,这种独特体验就像开了游戏里的“隐藏关卡”,只有自己动手搭建Redis才能解锁,简直太刺激啦!

    和大多数实际项目一样,Redis是个超复杂的“巨无霸”项目,好多人费了九牛二虎之力才把它做出来。新手想要一下子搞懂它,那难度就跟徒手摘星星差不多。这本书就偏要“另辟蹊径”:咱们从零开始搭建,在实践的“战场”上摸爬滚打,主打一个“沉浸式学习”,让你学得明明白白!

    # 为啥非得从零开始呢?

    这里面的讲究可多了去了:

    • 学得更快。从零开始搭建,就像是搭乐高积木,一块一块慢慢来,每一块积木就是一个新的概念。咱们从最基础的小零件开始,慢慢往上加,最后拼出一个完整的“大城堡”,这时候你对整个项目就心里有数啦,这种感觉简直不要太爽!
    • 学得更透。虽说有不少资料能给你讲现成的东西是怎么运作的,但光看那些资料,就好比站在河边看别人游泳,和自己跳下去游完全是两码事。人很容易把记住了当成理解了,还老是被那些不重要的小细节“牵着鼻子走”,把核心原理和基础知识都忘到九霄云外了。
    • 学得更多。“从零开始”这种方式,就像是给你开启了一个“知识盲盒”,逼着你把这个领域的各个方面都探索一遍,毕竟学习可没有“偷懒”的捷径!而且,很多时候有些东西你之前连听都没听说过,在这个过程中,你可能突然就发现那些“连自己都不知道自己不知道”的神奇知识,这惊喜感简直拉满!

    用费曼的话来说就是:“我要是造不出来,那我肯定就是没搞懂。”就这么简单直接,没毛病!

    # 这个专栏咋用呢?

    这个专栏采用的是循序渐进的“闯关模式”,每一关都接着上一关,还会给你带来新的挑战(也就是新的概念)。完整的源代码可以在网上找到,方便大家参考。强烈建议各位小伙伴自己动手捣鼓捣鼓代码,或者干脆不看代码,自己从零开始写,体验一把“创造世界”的快乐。

    书里的代码写得那叫一个直白,主打一个“一看就懂”。主要用的是普通的C语言,C++的东西几乎没怎么用。要是你不会C语言也别慌,正好可以用其他语言来试试,说不定还能创造出属于自己的“代码奇迹”呢!

    最后咱们能做出一个只有大约1200行代码的迷你Redis。1200行代码看着不多,但它把这本书想讲的很多重要内容都涵盖了,就像一个小小的“知识宝库”,里面装满了宝藏!

    书里用的技术和方法和真正的Redis不完全一样。有些是故意简化了,为的就是让你能轻松理解;有些是为了讲清楚某个通用的知识点才这么用的。大家要是对比一下不同的方法,还能学到更多“隐藏彩蛋”,这波简直血赚啊!

    书里的代码只能在Linux上跑哦。

    限于作者水平有限,如果有问题可以联系我。小方微信公众号【CppGuide】:

    # 目录

    # 第一部分:入门篇

    01. 引言

    02. 套接字(Socket)入门

    03. 简易服务器/客户端

    04. 协议解析

    05. 事件循环与非阻塞I/O

    06. 事件循环的实现

    07. 基础服务器:get、set、del操作

    # 第二部分:核心主题篇

    08. 数据结构:哈希表(Hashtables)

    09. 数据序列化

    10. AVL树:实现与测试

    11. AVL树与有序集合

    12. 事件循环与定时器

    13. 堆数据结构与生存时间(TTL,Time To Live)

    14. 线程池与异步任务

    上次更新: 2025/04/01, 13:21:34
    02. 套接字入门

    02. 套接字入门→

    最近更新
    01
    C++语言面试问题集锦 目录与说明
    03-27
    02
    第四章 Lambda函数
    03-27
    03
    第二章 关键字static及其不同用法
    03-27
    更多文章>
    Copyright © 2024-2025 沪ICP备2023015129号 张小方 版权所有
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式