Memcached源码分析之从SET命令开始说起
作者: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源码分析结构篇分为了三个主要部分:
转载请注明:Calix » Memcached源码分析之从SET命令开始说起
最新文章
- linux tar命令的使用
- STSdb,最强纯C#开源NoSQL和虚拟文件系统 4.0 RC2 支持C/S架构
- UVA 1398 Meteor
- Delphi For Android 开发笔记 1 - 开发工具介绍
- Microsoft Office Excel 不能访问文件“XXXXXXXXXXXXX.xls”。 可能的原因有:
- GDB 进行调试 使用心得
- WCF - REST服务
- Java导入证书失败Keystore was tampered with, or password was incorrect
- phpcmsV9于基本介绍
- vue_ui使用
- CLOUD不审核修改物料
- java 中 System
- ASP.NET WebApi 基于OAuth2.0实现Token签名认证
- WOW.js和animate.css让页面滚动时显示动画
- pycharm如何新项目如何不默认创建虚拟环境(吐槽)
- 如何引用GitHub的静态资源文件 js css
- fengsuo
- python常用内置函数1
- jboss eap6.1(5)(ejb升级)
- ubuntu系统中添加DNS服务器地址后诡异消失的解决办法