redis启动流程介绍

转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/114.html?1455860562

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从网络连接上读取请求,解析出请求参数并处理。

时间: 2024-10-13 00:54:25

redis启动流程介绍的相关文章

Linux系统开机启动流程介绍

一.linux系统进程启动流程图: 二.简单概括描述linux系统从开机到登陆界面的启动过程 1.开机BIOS自检 2.MBR引导 3.grub引导菜单 4.加载内核 5.启动init进程 6.读取inittab文件执行rc.sysinit.rc等脚本 7.启动mingetty进入系统登录界面 三.详细剖析linux系统启动过程 1.POST开机自检 电脑主机打开电源的时候随后会听到滴的一声响系统启动开始了开机自检POST-power on self Test自检开始这个过程中主要是检测计算机硬

istio组件介绍和启动流程

Istio各个Deployment包含的容器组件 Deployment 名称 Container和Port Container和Port istio-pilot pilot: 8080,15010 proxyv2: 15003,15005,15007 istio-galley galley: 443,9093 istio-egressgateway proxyv2: 80,443,15090 istio-ingressgateway proxyv2: 80,443,31400,15011,806

《鸟哥的Linux私房菜》读书笔记:X window介绍及启动流程

X Window System简介 X Window System是跨网络和操作系统的,其是一个软件. 1.主要组件 X Server:硬件管理.屏幕绘制和提供字型功能. X Client:负责 X Server要求的事件处理.X Client最重要的工作就是处理来自X Server的动作,将该动作处理成为绘图数据, 再将这些绘图数据传回给X Server.客户端用的是什么操作系统在Linux主机端是不在乎的. X Window Manager(GNOME.KDE.twm.XFCE):特殊的X

u-boot启动流程分析(2)_板级(board)部分

转自:http://www.wowotech.net/u-boot/boot_flow_2.html 目录: 1. 前言 2. Generic Board 3. _main 4. global data介绍以及背后的思考 5. 前置的板级初始化操作 6. u-boot的relocation 7. 后置的板级初始化操作 1. 前言 书接上文(u-boot启动流程分析(1)_平台相关部分),本文介绍u-boot启动流程中和具体版型(board)有关的部分,也即board_init_f/board_i

Cocos2d-x3.3RC0的Android编译Activity启动流程分析

本文将从引擎源代码Jni分析Cocos2d-x3.3RC0的Android Activity的启动流程,以下是具体分析. 1.引擎源代码Jni.部分Java层和C++层代码分析 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXV4aWt1b18x/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > watermark/2/text/aHR0cDov

centos启动流程[转]

启动流程概览 在硬件驱动成功后,Kernel 会主动呼叫 init 程序,而 init 会取得 run-level 资讯: init 运行 /etc/rc.d/rc.sysinit 文件来准备软件运行的作业环境 (如网络.时区等): init 运行 run-level 的各个服务之启动 (script 方式): init 运行 /etc/rc.d/rc.local 文件: init 运行终端机模拟程序 mingetty 来启动 login 程序,最后就等待使用者登陆啦:    init,/etc

UI开发----基础视图和程序启动流程(delegate)

//  Create by 郭仔  2015年04月13日22:10:23 今天介绍的基础视图包括:UITextField.UIButton 一.定义UITextField: 创建UITextField与创建UILabel的步骤很相似.? 1.开辟空间并初始化(如果本类有初始化?方法,使?用?自?己的;否则 使?用?父类的).? 2.设置?文本显?示.输?入相关的属性? 3.添加到?父视图上,?用以显?示? 4.释放 UITextField * textField = [[UITextField

Tomcat源码分析之—具体启动流程分析

从Tomcat启动调用栈可知,Bootstrap类的main方法为整个Tomcat的入口,在init初始化Bootstrap类的时候为设置Catalina的工作路径也就是Catalina_HOME信息.Catalina.base信息,在initClassLoaders方法中初始化类加载器,然后通过反射初始化org.apache.catalina.startup.Catalina作为catalina守护进程: 一.load Bootstrap中load流程: 反射调用Catalina的load方法

Spring Boot启动流程详解(一)

环境 本文基于Spring Boot版本1.3.3, 使用了spring-boot-starter-web. 配置完成后,编写了代码如下: @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } @RestController public class RootCont