zoukankan      html  css  js  c++  java
  • Redis的AOF是怎么实现的

    今天通过阅读AOF的实现代码,牵出了许多本来不是必须的话题,也都记下来先:

    Redis自己搞了一套事件循环机制:

    http://itindex.net/detail/26944-redis-%E4%BA%8B%E4%BB%B6-%E5%AE%9A%E6%97%B6%E5%99%A8

    (我发现我应该先去了解一下epoll模型,听说N年了,还不知道什么样呢。)

    1. (redis.c) processCommand(redisClient *c)

    2. (redis.c) call(redisClient *c, int flags)

    3. (redis.c) propagate(c->cmd,c->db->id,c->argv,c->argc,flags);

    4. (aof.c) feedAppendOnlyFile !!!

    void propagate(struct redisCommand *cmd, int dbid, robj **argv, int argc, int flags)
    {
      if (server.aof_state != REDIS_AOF_OFF && flags & REDIS_PROPAGATE_AOF)
        feedAppendOnlyFile(cmd,dbid,argv,argc);
      if (flags & REDIS_PROPAGATE_REPL)
        replicationFeedSlaves(server.slaves,dbid,argv,argc);
    }

    关于feedAppendOnlyFile的实现,可以参考:

    它只是把命令缓存到server.aof_buf 中。

    -----------------------------------------------------------------------------------------------------------------

    但是可以确定的就是,存在一个定时器,定时执行AOF写入。

  • 相关阅读:
    C#如何取硬件标志
    在C#中利用Excel做高级报表
    C#实现网段扫描
    用C#编写一个抓网页的应用程序
    C# 中操作API
    C#串口操作
    C#里的InputBox
    使用C#进行Word 2002和Excel 2002编程
    用C#快速往Excel写数据
    postgres 查看数据库大小
  • 原文地址:https://www.cnblogs.com/healerkx/p/4534174.html
Copyright © 2011-2022 走看看