redis启动流程介绍

 更新时间:2015年01月08日 17:00:30   投稿:junjie  
这篇文章主要介绍了redis启动流程介绍,本文更分5步,分别是准备运行环境、解析命令行参数、initServer()初始化服务、loadDataFromDisk()从rdb或aof文件加载数据、aeMain()开始事件循环,接收客户端请求,需要的朋友可以参考下

1. 准备运行环境

* 设置oom handler,zmalloc分配内存失败时调用
* 初始化随机种子,用于生成随机数
* 将server参数初始化为默认值 
* 创建命令与处理函数的映射表

2. 解析命令行参数、loadServerConfig()解析配置文件

* 配置文件会覆盖命令行指定的参数
* 无效的配置项或者不合理的配置值会导致redis无法正常启动

3. initServer()初始化服务

* 安装信号处理函数 
* 创建共享对象,redis预分配好常用的对象用于共享,以节省内存 
* 根据maxc lients配置调整max open files
*  创建全局db字典,每个db对应一个dict 
* 监听网络端口,安装事件处理器 
* 如果开启了aof,打开aof文件 
* 创建serverCron定时器

4. loadDataFromDisk()从rdb或aof文件加载数据

* load数据出错(比如文件格式乱掉)等会导致redis不能正常启动
* loading的过程中,redis仍能处理请求,但大部分请求都会回复-LOADING错误

5. aeMain()开始事件循环,接收客户端请求

监听文件描述符的事件处理函数初始化为acceptTcpHandler,新建立的连接的事件处理函数设置为readQueryFromClient,readQueryFromClient从网络连接上读取请求,解析出请求参数并处理。

相关文章

  • 关于Redis中bitmap的原理和使用详解

    关于Redis中bitmap的原理和使用详解

    这篇文章主要介绍了关于Redis中bitmap的原理和使用详解,BitMap即位图,使用每个位表示某种状态,适合处理整型的海量数据,本质上是哈希表的一种应用实现,需要的朋友可以参考下
    2023-05-05
  • Redis中秒杀场景下超时与超卖问题的解决方案

    Redis中秒杀场景下超时与超卖问题的解决方案

    当我们在linux中使用ab来模拟高并发秒杀时可能会遇到两种问题,“超时和超卖”,本文就详细介绍了Redis中秒杀场景下超时与超卖问题的解决方案,感兴趣的可以了解一下
    2022-05-05
  • Redis教程(十五):C语言连接操作代码实例

    Redis教程(十五):C语言连接操作代码实例

    这篇文章主要介绍了Redis教程(十五):C语言连接操作代码实例,本篇博客是该系列博客中的最后一篇,在这里将给出基于Redis客户端组件访问并操作Redis服务器的代码示例,需要的朋友可以参考下
    2015-05-05
  • Redis exists命令bug分析(案例详解)

    Redis exists命令bug分析(案例详解)

    Redis EXISTS 命令用于检查给定 key 是否存在,本文重点给大家介绍Redis exists命令bug分析,感兴趣的朋友跟随小编一起看看吧
    2022-02-02
  • Redis批量删除指定前缀的Key两种方法

    Redis批量删除指定前缀的Key两种方法

    redis作为缓存服务器在项目中经常使用,使用redis存储数据时,我们经常会将key分组,这篇文章主要给大家介绍了关于Redis批量删除指定前缀的Key两种方法,需要的朋友可以参考下
    2024-01-01
  • redis字符串类型_动力节点Java学院整理

    redis字符串类型_动力节点Java学院整理

    这篇文章主要为大家详细介绍了redis字符串类型的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • 浅谈Redis常见延迟问题定位与分析

    浅谈Redis常见延迟问题定位与分析

    大部分时候,redis延迟很低,但是在某些时刻,有些redis实例会出现很高的响应延时,本文主要介绍了浅谈Redis常见延迟问题定位与分析,具有一定的参考价值,感兴趣的可以了解一下
    2022-06-06
  • Redis 定长队列探索及实践

    Redis 定长队列探索及实践

    这篇文章主要介绍了Redis 定长队列探索及实践,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • Django使用redis配置缓存的方法

    Django使用redis配置缓存的方法

    Redis是一个内存数据库由于其性能极高,因此经常作为中间件、缓存使用,缓存某些内容是为了保存昂贵计算的结果,这样就不必在下次执行计算,接下来通过本文给大家分享redis配置缓存的方法,感兴趣的朋友一起看看吧
    2021-06-06
  • Redis List列表的详细介绍

    Redis List列表的详细介绍

    这篇文章主要介绍了Redis List列表的详细介绍的相关资料,Redis列表是简单的字符串列表,按照插入顺序排序,需要的朋友可以参考下
    2017-08-08

最新评论