Redis是一个很简单的nosql类型的数据库,代码量相对来说是比较少的.但是代码风格确实比较漂亮.

我打算花一段时间剖析一下它的代码,不光是看啦,看的话,收获是不大的.我打算从Redis那纷繁复杂,令人眼花缭乱的代码里剥出一个单机的数据库,能够运行的,但是没有那么多的错误处理代码,这样以来既可以学到作者的代码风格,也可以看到如何来实现一个数据库,同时还可以学习网络编程,确实是一举多得的一件事情.

如果你想了解一下源码的话,推荐一本写的比较清楚的书:

<<Redis设计与实现>>

我应该会在这项工作估计花几个星期吧,最迟应该不超过一个月,剥完之后,我打算用cpp来写一个redis客户端.然后我研究生期间的网络编程学习之旅估计就到头了,因为加上我之前做过的一些东西,linux网络编程的一些特别坑的地方,以及特别精华的东西已经触摸到了,剩下的都不是什么难事了,如果将来工作是这方面的话,就等待工作慢慢地熟练了.

现在已经读了一部分,最起码它的统一事件源部分已经剥出来了,接下来慢慢添加剩余的代码.

如果你也感兴趣的话,可以看一下我剥出来的代码:https://github.com/lishuhuakai/Redis-Simplify

12月10日:

~~~~~~~~~~

完结撒花,代码已经剥离完毕,代码也能很好地运行了,我使用的机器是ubuntu 15.10.接下来就是写一个客户端来练练手了,相比于服务端,客户端简直就是小儿科.

12月3日:

~~~~~~~~~~

代码现在已经非常臃肿了.看来C的代码到了一定的程度之后,真的变得很难管理了.个人突然觉得1到2万的c代码还在掌控之内,再多就已经超过我能掌控的范围了.换句话说,你不可能做到细节与宏观都了解得一清二楚,太费劲了.

这或许也是为什么人们要提出抽象的原因吧,我只规定一套接口,我的代码依赖于这套接口之上,至于你怎么实现,那就和我没有多大的关系了.

还有一点,c工程写大之后,其实你去看它的代码,其实里面用了很多面向对象的思想,包括数据的封装,代码的复用,感觉越写越像cpp.代码我已经剥了很大的一部分了,应该用不了多久就能剥出一个单机NoSql数据库了.然后准备开始写redis的客户端了.

开始读redis的源码了相关推荐

  1. redis的源码编译安装+发布订阅+RDB持久化

    redis的源码编译安装+发布订阅+RDB持久化 转载于:https://www.cnblogs.com/zwq-/p/10420455.html

  2. Redis Sentinel 源码:Redis的高可用模型分析

    摘要:本文通过对Redis Sentinel源码的理解,详细说明Sentinel的代码实现方式. Redis Sentinel 是Redis提供的高可用模型解决方案.Sentinel可以自动监测一个或 ...

  3. rock带你读CornerNet-lite系列源码(二)

    文章目录 前言 CorNerNet 结构 CornerNet_saccade结构 attention机制 CornerNet_Squeeze结构 构建Groundtruth 热图 focal loss ...

  4. lfi读取php,php LFI读php文件源码以及直接post webshell

    php LFI读php文件源码以及间接post 网站shell 假如如下一个场景 (1) http://vulnerable/fileincl/example1.php?page=intro.php( ...

  5. 读PythonRobotics StateLatticePlanner源码-代码注释篇

    文章目录 2.注释 2.1motion_model.py 2.2model_predictive_trajectory_generator.py 2.3 lookuptable_generator.p ...

  6. python redis事务_python redis事务源码及应用分析

    在多个客户端同时处理相同的数据时,不谨慎的操作很容易导致数据出错.一般的关系型数据库中有事务保证了数据操作的原子性,同样Redis中也设置了事务,可以理解为"将多个命令打包,然后一次性.按顺 ...

  7. 计划写Redis的源码分析笔记

    每天抽出时间来读一读代码,只是作为学习的目的.若有写的不正确的,欢迎指出错误,谢谢! redis的版本选的2.6.12.形式以源码剖析的方式写,类似于结合代码写注释. 转载于:https://www. ...

  8. 读Kafka Consumer源码

    最近一直在关注阿里的一个开源项目:OpenMessaging OpenMessaging, which includes the establishment of industry guideline ...

  9. 一文读懂vuex4源码,原来provide/inject就是妙用了原型链?

    1. 前言 你好,我是若川,欢迎加我微信ruochuan12,加群长期交流学习. 这是学习源码整体架构系列 之 vuex4 源码(第十篇).学习源码整体架构系列文章(有哪些必看的JS库):jQuery ...

最新文章

  1. GridView的DataKeyNames属性 转载的
  2. PatchmatchNet:一种高效multi-view stereo框架 (CVPR2021 Oral)
  3. Jscript 内部对象
  4. boost::local_function模块实现不可复制的 local_function的测试程序
  5. 3-5 获取命令行参数
  6. 在MySQL数据库上使用Quartz Scheduler入门
  7. 调试windows服务
  8. Android -- 写xml到SD卡中
  9. 邮箱大师qq邮箱服务器设置,如何解决邮箱大师登陆不了qq邮箱的问题
  10. SNIFFER问题集锦
  11. 数据库sql语句日期查询
  12. android adb连接多个夜神模拟器,夜神安卓模拟器连接adb的具体操作流程
  13. SATA硬盘性能测试软件,趣味测试:实测SATA线对硬盘性能的影响
  14. Arduino UNO驱动ADS1115模数转换模块
  15. Windows 平台下局域网劫持测试工具 – EvilFoca
  16. 01.Polsarpro软件介绍
  17. oppo a36参数配置
  18. 艾美捷双链RNA定量试剂盒作用盒原理分析
  19. 程序员鄙视链最全图解,好有道理
  20. C++ MFC万能的类向导

热门文章

  1. 辅助工具_米家全景相机如何拍全景图
  2. flstudio怎么设置中文?英文切换中文语言详细操作教程
  3. Python语言之迭代器与生成器
  4. UE4 界面设置为中文
  5. Ciena为电信运营商推出开放式D-NFV解决方案
  6. 创建员工表staff
  7. php 安装zip,php7.4安装zip扩展
  8. html期末作业代码网页设计——美食网(7页) HTML+CSS+JavaScript实现一个静态页面(含源码)
  9. 查询抖音账号关注数点赞数
  10. html5 strongeaseinout,HTML5 街头霸王游戏 (开放源码)