美文网首页memcache源代码研究
memcache源代码研究 - overview

memcache源代码研究 - overview

作者: 羽寒 | 来源:发表于2015-04-07 23:28 被阅读90次

线程模型

  首先,memcache 在启动的时候会初始化一组 worker 线程,主线程接收到的请求都会转给 worker 线程去处理。需要多提一句的是,主线程与各 worker 线程之间是通过 libevent 通信的, memcache 处理各种 IO 操作都基于的 libevent。

线程模型.png线程模型.png

处理流程

  当主线程接收到请求连接(connection)的时候,会将请求转发给 worker 线程。请求的处理流程集中在memcache.c文件里的drive_machine方法当中。drive_machine其实是一个大号的状态机,处理流程经历的状态如一下代码所示:

/**
 * Possible states of a connection.
 */
enum conn_states {
    conn_listening, 
    conn_new_cmd, 
    conn_waiting, 
    conn_read, 
    conn_parse_cmd,
    conn_write,
    conn_nread,
    conn_swallow,
    conn_closing,
    conn_mwrite,
    conn_closed,
    conn_max_state
};

  其中解析、处理请求是在conn_parse_cmd开始进行的,主要的逻辑是在process_command函数当中,里面含有对不同命令的处理函数,函数名一般叫process_xxx_command

关联数组

  memache 使用 Associative Array 来实现的缓存功能。主要的逻辑在assoc.hassoc.c代码文件中。worker 线程接到请求的时候会根据命令类型(set,get etc)对关联数组做不同的操作。

相关文章

  • memcache源代码研究 - overview

    线程模型   首先,memcache 在启动的时候会初始化一组 worker 线程,主线程接收到的请求都会转给 w...

  • memcache与memcached的区别

    Memcache是什么? Memcache是一个自由和开放源代码、高性能、分布式的内存缓存系统。用于减轻数据库负载...

  • memcache与memcached的区别

    Memcache是一个软件 Memcache是一个自由和开放源代码、高性能、分配的内存对象缓存系统。用于加速动态w...

  • Discover Flask, Part 1 – Setting

    Series Overview 浏览 discoverflask.com ,可以看到本系列的视频、博客以及源代码。...

  • cache书目录

    memcache memcache是什么 memcache的工作原理 memcache的特点 memcache如何...

  • CentOS 7 下安装memcache.md

    [TOC] memcache 官网下载最新版本的源代码 正常解压编译 报错 [1] 遇到这种问题,有两种情况,解决...

  • markdown测试

    overview overview overview overview hello world overview ...

  • PHP如何安装memcache扩展

    安装memcache只是安装memcache的客户端,要让PHP与memcache连接还得在PHP中安装memca...

  • MemCache详细讲解

    1 MemCache讲解 1.1 MemCache是什么 MemCache是一个自由、源码开放、高性能、分布式的分...

  • MemCache 入门极简教程

    MemCache 概述 MemCache虽然被称为”分布式缓存”,但是MemCache本身完全不具备分布式的功能 ...

网友评论

    本文标题:memcache源代码研究 - overview

    本文链接:https://www.haomeiwen.com/subject/kipzxttx.html