Memcached源码分析之从SET命令开始说起
2016-09-07 16:36
585 查看
作者:Calix
如果直接把memcached的源码从main函数开始说,恐怕会有点头大,所以这里以一句经典的“SET”命令简单地开个头,算是回忆一下memcached的作用,后面的结构篇中关于命令解析部分主要也是围绕着SET命令展开分析,相信把一句SET命令背后做的事情都搞清楚,那么memcached大部分源码都了解得七七八八了。
那么,回忆一下,set命令做了个什么事情?
无非就是把一个value set到某个key上面,保存在内存当中。
再细化一下:
1)memcached是一个缓存服务器,我们使用它的时候往往是通过一个客户端,例如php的memcached客户端,或者直接在linux终端通过telnet,无论哪种方式,首先的行为都是“建立连接”。(注,虽然memcached是一个分布式的缓存服务器,其实质分布算法在客户端实现,所以关于分布式逻辑不在本次源码分析范围内。)那么,memcached是怎样处理网络请求的?是多进程还是异步的方式?
2)当连接建立完成后,我们在发一个SET命令,例如在终端telnet成功后,敲下:”set name 0 0 3\r\n Tom\r\n”(这是memcached的set协议),那么memcached是怎么获取到这句命令和数据的,获取到之后怎么解析,以及交给哪些模块去执行的?
3)解析到set命令后,知道要保存一个k-v结构的数据到内存,那么它是怎么分配内存的?分配后怎么能保证下次我们取的时候很快能通过“key”来获取”value”?又是怎么在并发的情况下保证原子性和一致性?
带着上面的问题,我把对memcached源码分析结构篇分为了三个主要部分:
一)memcached源码分析之线程模型
二)memcached源码分析之请求处理(状态机)
三)memcached源码分析之内存管理
转载请注明:Calix » Memcached源码分析之从SET命令开始说起
如果直接把memcached的源码从main函数开始说,恐怕会有点头大,所以这里以一句经典的“SET”命令简单地开个头,算是回忆一下memcached的作用,后面的结构篇中关于命令解析部分主要也是围绕着SET命令展开分析,相信把一句SET命令背后做的事情都搞清楚,那么memcached大部分源码都了解得七七八八了。
那么,回忆一下,set命令做了个什么事情?
无非就是把一个value set到某个key上面,保存在内存当中。
再细化一下:
1)memcached是一个缓存服务器,我们使用它的时候往往是通过一个客户端,例如php的memcached客户端,或者直接在linux终端通过telnet,无论哪种方式,首先的行为都是“建立连接”。(注,虽然memcached是一个分布式的缓存服务器,其实质分布算法在客户端实现,所以关于分布式逻辑不在本次源码分析范围内。)那么,memcached是怎样处理网络请求的?是多进程还是异步的方式?
2)当连接建立完成后,我们在发一个SET命令,例如在终端telnet成功后,敲下:”set name 0 0 3\r\n Tom\r\n”(这是memcached的set协议),那么memcached是怎么获取到这句命令和数据的,获取到之后怎么解析,以及交给哪些模块去执行的?
3)解析到set命令后,知道要保存一个k-v结构的数据到内存,那么它是怎么分配内存的?分配后怎么能保证下次我们取的时候很快能通过“key”来获取”value”?又是怎么在并发的情况下保证原子性和一致性?
带着上面的问题,我把对memcached源码分析结构篇分为了三个主要部分:
一)memcached源码分析之线程模型
二)memcached源码分析之请求处理(状态机)
三)memcached源码分析之内存管理
转载请注明:Calix » Memcached源码分析之从SET命令开始说起
相关文章推荐
- memcached源码分析-----set命令处理流程
- Memcached 源码分析——从 main 函数说起
- memcached学习笔记——存储命令源码分析下篇
- memcached源码分析-----get命令处理流程
- redis源码分析(六)、redis命令学习总结—Redis 集合(Set)
- Memcached 源码分析——从 main 函数说起
- Memcached 源码分析--命令流程分析
- Linux c 开发 - Memcached源码分析之命令解析(2)
- redis源码分析(七)、redis命令学习总结—Redis 有序集合(sorted set)
- memcached源代码分析-----set命令处理流程
- Memcached源码分析:内容包括get过程、set操作、LRU操作、Hash表操作、连接队列等
- Memcached源码分析之set操作
- Memcached源码分析(线程模型)
- uboot源码分析(1)uboot 命令解析流程简析
- 通过stats命令分析Memcached的内部状态
- live555源码分析---- DESCRIBE命令处理
- 通过stats命令分析Memcached的内部状态
- MiniGUI源码分析-- 开始篇
- ArgoUML源码分析-新手开始
- php与memcached服务器交互的分布式实现源码分析 [memcache版]