V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cyhone
V2EX  ›  Redis

Redis 事件循环器(AE)实现剖析

  •  
  •   cyhone · 2019-11-20 11:33:21 +08:00 · 9410 次点击
    这是一个创建于 1848 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Redis 作为一个单线程高性能的内存缓存 Server 而被人熟知。作为一个典型的 Reactor 式网络应用,Redis 能够达到如此高的性能,必然要依靠足够可靠的事件循环库。 Redis 内置了一个高性能事件循环器,叫做 AE。其定义和实现可以在ae*.h/cpp这些文件中找到。

    AE 本身就是 Redis 的一部分,所以整体设计原则就是够用就行。也正因为这个背景,AE 的代码才可以简短干净,非常适合阅读和学习。

    本文将基于 Redis 5.0.6 的源码分析下其事件循环器(AE)的实现原理。

    同时本人也提供了一个Redis 注释版,用以辅助理解 Redis 的源码。

    点击阅读全文

    5 条回复    2019-11-20 21:07:49 +08:00
    cyhone
        1
    cyhone  
    OP
       2019-11-20 11:46:10 +08:00
    原文链接: https://www.cyhone.com/articles/analysis-of-redis-ae/

    欢迎大家关注公众号及同名知乎专栏:编程沉思录
    c0011
        2
    c0011  
       2019-11-20 11:56:06 +08:00
    楼主剖析源码有什么技巧吗?
    cyhone
        3
    cyhone  
    OP
       2019-11-20 19:23:10 +08:00
    @c0011 我说一下自己看代码时候的一些感受,不一定适用:
    首先在代码的选择上,尽量选择一些自己熟悉其使用和背景的代码来看,最好是和目前业务相关的。这样可以看源码的时候也更容易理解一些

    其次是工具上,vscode 当然是必备的了,如果有条件使用 clion、idea、goland 这种跳转良好,便于 debug 的 IDE,可以随时打断点下看下整个代码的工作流程。

    最后有个小技巧,可以选择性的看一下这个源码的 commit 记录,尤其是 fix 和优化的 commit,这样可以更好地理解作者代码这么写背后的抉择,更容易从作者的角度理解代码。
    c0011
        4
    c0011  
       2019-11-20 20:06:48 +08:00
    @cyhone 谢谢,看您的博客,感觉您剖析源码挺快的,怎么做到的啊?
    cyhone
        5
    cyhone  
    OP
       2019-11-20 21:07:49 +08:00
    @c0011 可能是因为看源码有一些积累之后,阅读速度自然会稍微快一些吧。

    不过这篇 redis ae 的分析文章,本身因为 redis 这块就比较简单,所以看代码没花多少工夫。

    上一篇关于 Filebeat 的花了好几天来看,不过恰好是因为工作刚需,必须要搞懂,所以 Filebeat 是花了一些工作时间来看~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2996 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:46 · PVG 19:46 · LAX 03:46 · JFK 06:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.