`

memcached的基础

 
阅读更多
memcached是什么?
memcached 是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 为首开发的一款软件。现在已成为 mixi、 hatena、 Facebook、 Vox、LiveJournal等众多服务中 提高Web应用扩展性的重要因素。
许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。 但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、 网站显示延迟等重大影响。
这时就该memcached大显身手了。memcached是高性能的分布式内存缓存服务器。 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、 提高可扩展性。

图1 一般情况下memcached的用途

memcached的特征
memcached作为高速运行的分布式缓存服务器,具有以下的特点。
协议简单
基于libevent的事件处理
内置内存存储方式
memcached不互相通信的分布式
协议简单
memcached的服务器客户端通信并不使用复杂的XML等格式, 而使用简单的基于文本行的协议。因此,通过telnet 也能在memcached上保存数据、取得数据。下面是例子。
$ telnet localhost 11211
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
set foo 0 0 3     (保存命令)
bar               (数据)
STORED            (结果)
get foo           (取得命令)
VALUE foo 0 3     (数据)
bar               (数据)
协议文档位于memcached的源代码内,也可以参考以下的URL。
http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt
基于libevent的事件处理
libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能 封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能。 memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。 关于事件处理这里就不再详细介绍,可以参考Dan Kegel的The C10K Problem。
libevent: http://www.monkey.org/~provos/libevent/
The C10K Problem: http://www.kegel.com/c10k.html
内置内存存储方式
为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。 由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。 另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。 memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。 关于内存存储的详细信息,本连载的第二讲以后前坂会进行介绍,请届时参考。
memcached不互相通信的分布式
memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。 各个memcached不会互相通信以共享信息。那么,怎样进行分布式呢? 这完全取决于客户端的实现。本连载也将介绍memcached的分布式。


图2 memcached的分布式
  • 大小: 28.2 KB
  • 大小: 11.7 KB
分享到:
评论

相关推荐

    memcached基础-参考

    memcached基础-参考

    Memcached基础及示例

    Memcached是一个免费开源、高性能、分布式的内存对象缓存系统。Memcached是在内存中,为特定数据(字符串或对象)构建key-value的小块数据存储。

    Memcached客户端手册

    Memcached使用入门,Memcached基础及示例程序,Memcached Java API基础之MemcachedClient

    网上收集最新的Memcached学习资料

    Memcached原理和使用详解.pdf memcached完全剖析–1._memcached的基础.pdf memcached全面剖析.pdf Memcached内存分析、调优、集群.pptx

    memcached详细安装

    memcached 包含基础知识 简单的安装 启动等情况 适合新手菜鸟

    高速web缓存组件 memcached全面剖析 中文版

    然而,memcached的基础知识远远未能像其他Web技术那样普及,memcached在国内的大规模应用也在急速兴起。 第1 章 memcached的基础 第2章 理解memcached的内存存储 第3 章 memcached的删除机制和发展方向 第4 章 ...

    Simple-Spring-Memcached

    Simple-Spring-Memcachd(SSM)企图通过实现几个基础的使用项来简化Memcached的使用。 该项在java-memcached客户端的基础上使用java5的注解和Sping/AspectJ的AOP,使能够在Sping中管理bean缓存。使用Simple-Spring-...

    LinQ to Memcached with SQL Server Change Tracking

    1.Memcached 安装、部署、Demo程序 2.LinQ to Memcached 3.性能测试、通信数据结构设计 ...6.项目应用(IM基础数据缓存,例:Category、Brand、Manufacturer等) 7.了解Memcached实现机制,数据模型并做培训

    Tomcat+MemcachedRedis集群

    Tomcat+MemcachedRedis集群,有视频实战以及源码。包含Tomcat性能优化,Redis基础入门以及使用场景,性能优化

    memcached部署

    memcached部署,详细介绍了memcached缓存的使用,为以后的云负载均衡做一个基础。

    memcached全面剖析

    memcached的基础知识 由日本的mixi两名工程师连载 翻译的中文

    集群好书《高性能Linux服务器构建实战》 试读章节下载

    3.1 Memcached基础 3.1.1 什么是Memcached 3.1.2 Memcached的特征 3.1.3 Memcached的安装 3.1.4 Memcached的简单使用过程 3.2 剖析Memcached的工作原理 3.2.1 Memcached的工作过程 3.2.2 Slab ...

    hibernate-memcached-1.5.jar

    这个包是最高版本了,google code是1.22,但是这个版本是基础班的1.5版本.是github上源代码经过我打包出来的jar

    Senparc.CO2NET:支持.NET Framework和.NET Core的公共基础扩展库

    森帕克模块功能Nuget名称努吉特支持.NET版本CO2NET基础库森帕克 APM模块Senparc.CO2NET.APM Redis基础库Senparc.CO2NET.Cache.Redis Memcached基础库Senparc.CO2NET.Cache.Memcached 同时支持.NET Standard 2.0+和...

    memcached全面剖析.zip

    memcached的基础 memcached全面剖析–2. 理解memcached的内存存储 memcached全面剖析–3. memcached的删除机制和发展方向 memcached全面剖析–4. memcached的分布式算法 memcached全面剖析–5. memcached的应用...

    memcached全面剖析.docx

    然而, memcached 的基础知识远远未能像其他 Web 技术那样普及,memcached 在国内的大规模应用也鲜为人知。而日本的 mixi(http://mixi.jp)则在这方面走在了前面,不仅大规模使用 memcached 作为缓存来加速 Web ...

    Go-MemcachedGoQueue是一个用Go语言写的基于memcached协议的消息队列

    Memcached Go Queue, 简称mgq, 是一个用Go语言写的,基于memcached协议的消息队列。其父亲mcq是最早应用于weibo的基础消息中间件,有着高性能,解耦的优点,使得其广泛应用于微博

    memcached完全剖析–1.memcached的基础

    从今天开始,将分几次针对最近在Web应用的可扩展性领域的热门话题memcached,与我公司开发部研究开发组的前坂一起,说明其内部结构和使用。memcached是以LiveJournal旗下DangaInteractive公司的BradFitzpatric为首...

Global site tag (gtag.js) - Google Analytics