博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis单机版本框架
阅读量:6162 次
发布时间:2019-06-21

本文共 685 字,大约阅读时间需要 2 分钟。

Redis主流程伪代码

def main(): init_server()  while server_is_not_shutdown():       time = aeSearchNearestTimer()       beforeSleep()       aeApiPoll(time)       processFileEvents()       processTimeEvents()  clean_server()

Redis main函数调用流程图及关键节点

图片描述

一条简单的set命令的执行流程

图片描述

serverCron函数的功能

图片描述

Q&A

1.bgsave执行时再次执行bgsave如何处理?

直接返回,返回信息会通知正在执行.

如果在aof rewrite时执行bgsave,会直接返回不能执行.

看代码此处应该有bgsave schedule命令,如果此时在执行aof rewrite,则会在aof结束后在serverCron中执行。

代码如下

图片描述

2.aof rewrite正在执行时再次发送bgrewriteaof会如何处理?

直接返回,返回信息通知正在执行

如果此时在执行rdbsave,则会在serverCron中在rdbsave结束之后执行aof rewrite.

代码如下:

图片描述

3.bgsave时如果master还在执行写入,由于linux COW机制,此时会给子进程拷贝一份数据,导致双倍内存。

待在测试环境验证是否会出现

4.client端发送的命令能否在server端保证顺序?

5.为什么redis本身支持分布式生产环境还在使用codis?

转载地址:http://zgefa.baihongyu.com/

你可能感兴趣的文章
手机端userAgent
查看>>
pip安装Mysql-python报错EnvironmentError: mysql_config not found
查看>>
http协议组成(请求状态码)
查看>>
怎样成为一个高手观后感
查看>>
[转]VC预处理指令与宏定义的妙用
查看>>
MySql操作
查看>>
python 解析 XML文件
查看>>
MySQL 文件导入出错
查看>>
java相关
查看>>
由一个异常开始思考springmvc参数解析
查看>>
向上扩展型SSD 将可满足向外扩展需求
查看>>
虚机不能启动的特例思考
查看>>
SQL Server编程系列(1):SMO介绍
查看>>
在VMware网络测试“专用VLAN”功能
查看>>
使用Formik轻松开发更高质量的React表单(三)<Formik />解析
查看>>
也问腾讯:你把用户放在什么位置?
查看>>
CSS Sprites 样式生成工具(bg2css)
查看>>
[转]如何重构代码--重构计划
查看>>
类中如何对list泛型做访问器??
查看>>
C++解析XML--使用CMarkup类解析XML
查看>>