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写入。

  • 相关阅读:
    Pandas | 21 日期功能
    Pandas | 20 级联
    Pandas | 19 合并/连接
    Pandas | GroupBy 分组
    Pandas | 缺失数据处理
    Pandas | 16 聚合
    Pandas | 15 窗口函数
    Pandas | 14 统计函数
    Pandas | 13 索引和选择数据
    Pandas | 12 选项和自定义
  • 原文地址:https://www.cnblogs.com/healerkx/p/4534174.html
Copyright © 2011-2022 走看看