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

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

  •  
  •   cyhone · 62 天前 · 3759 次点击
    这是一个创建于 62 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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   62 天前
    原文链接: https://www.cyhone.com/articles/analysis-of-redis-ae/

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

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

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

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

    上一篇关于 Filebeat 的花了好几天来看,不过恰好是因为工作刚需,必须要搞懂,所以 Filebeat 是花了一些工作时间来看~
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2888 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 19ms · UTC 03:24 · PVG 11:24 · LAX 19:24 · JFK 22:24
    ♥ Do have faith in what you're doing.