Memcached源码解析

来源:互联网 发布:淘宝买家采集软件 编辑:程序博客网 时间:2024/06/06 18:30

一 基本介绍及代码结构

memcached是一个非常有名的高性能分布式缓存系统, 采用memcached作为缓存系统能显著提高系统的性能。
想要更好地发挥对memcached的性能, 对其源代码进行分析显得非常必要。 本文基于memcached-1.4.15进行源代码分析,

假设读者对socket, 管道,多线程编程, hash算法等概念有基本的了解。文系列将从以下几个方面展开分析:

  • 基本介绍
  • 代码结构
  • 线程机制
  • 内存机制

本文将主要介绍前面两个部分,后面两个部分其他文章会进行介绍。

memcached基本介绍

  1. 概念与特点
  2. 使用场景
  3. 系统架构
  4. 一致性hash算法
  5. 基本命令
概念与特点

作为一个缓存系统,memcached的主要任务在于通过在内存中缓存一些常用数据,减少对数据库的存储操作,一方面将数据存储在内存中, 加快数据的存储速度;另一方面减轻数据库的负载,提高数据库的利用率。 如下图所示:

在应用程序首次获取数据时,从数据库中获取数据,并存储memcached服务器中,再次获取数据时,先查找memcached是否存在所需要的数据,

若存在,则从memcached中返回数据,否则,从数据库中获取, 这也是数据库缓存的基本流程。memcahced是一种开源的高性能分布式

内存对象缓存系统,主要通过减轻数据库负载来加速动态网页应用的访问。主要具有以下几个特点:

  • 采用协议简单

          主要采用TCP连接同server端进行通信,命令基于简单的文本行协议。

  • 基于libevent进行事件处理

          libevent是一个高效的事件处理框架,采用libevent进行事件处理,既能减少memcached本身的复杂度,

同时能有效结合libevent跨平台高效处理事件响应的特性,保证memcached的事件处理能力。

  • 采用内置键值对的内存存储方式

        采用用hash表来存储键值对,保证数据的高效存取,将数据存储在内置的内存空间,结合LRU(Least Recent Used)

算法自动删除使用频率最低的缓存,既能减少memcached所占的存储空间,又能保证数据访问的速度。

  • 采用独立的分布式服务器

          memcached的“分布式”特指客户-服务器之间一对多的分布式映射,服务器之间不存在分布式的概念,

各个memcached服务器之间不会互相通信实现信息共享, 也不会对存储对象进行复制备份保证数据

的安全性(实现备份来保证数据安全性需要额外的开销,cache数据没有必要保证这样的可靠性)。


参考地址:http://brionas.github.io/2014/01/06/memcached-code/

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 怀孕了痔疮犯了怎么办 痔疮手术后肛裂怎么办 痔疮引起的肛裂怎么办 痔疮手术后伤口不愈合怎么办 痔疮手术后伤口痒怎么办 肛瘘手术十五天后伤口疼怎么办 leep刀后hpv还是阳性怎么办 结肠息肉钳除后怎么办 痔疮手术后排便困难怎么办 住院未结账跑了怎么办 来月经痔疮犯了怎么办 安保压不下宫缩怎么办 肛周脓肿术后假性愈合怎么办 肛门的皱褶肿了怎么办 1月婴儿排便困难怎么办 吃完辣的痔疮肿了怎么办 肛裂怎么办兰州来医博.相信 胎儿脐带绕颈一周怎么办 郑大一附院怎么办合作医疗 痔疮包不消怎么办很疼 痔疮内扎手术后直肠窄小怎么办 2个月大的宝宝鼻塞怎么办 宝宝鼻屎比较深怎么办 来例假痔疮犯了怎么办 微医爽约过一次怎么办 炸完的薯条软了怎么办 学信网号码换了怎么办 学信网注册换手机了怎么办 学信网手机号码已被注册怎么办 学信网手机号码被注册了怎么办 去英国留学不会做饭怎么办 小米陶瓷刀钝了怎么办 橱柜的缝擦不到怎么办 悠悠球上油早了怎么办 买了没有esp的车怎么办 饥荒海难狗来了怎么办 饥荒海难拖网掉水里了怎么办 饥荒遇到了猪人怎么办 饥荒龙蝇赖在家不走怎么办 饥荒海难崩档了怎么办 gta5全是rpf文件怎么办