Memcached应用研究 Memcached应用研究

Memcached应用研究

  • 期刊名字:科技广场
  • 文件大小:656kb
  • 论文作者:徐剑强,邹伟平
  • 作者单位:南昌大学
  • 更新时间:2020-06-12
  • 下载次数:
论文简介

Memcached应用研究Application Research of Memcached应用研究徐剑强邹伟平Xu Jianqiang Zou Weiping(南昌大学,江西南昌330031)( Nanchang University, Jiangxi Nanchang 330031摘要: Memcached作为目前最杰出的内存缓存技术,应用越来越多。本文从 Memcached产生的背景出发,阐述了它在髙负載动态网站减轻数据库负担的原理及其应用场景,并对 Memcached进行了简单的应用测试,分析了 Memcached的内存管理方式相对于传统内存管理的优点。关键词: Memcached;内存缓存系统;Web查询中图分类号:TP391文献标识码:A文章编号:1671-4792(2012)07-009503Abrstract: As the most contiguous memory cache technique, Memcached is used more and more currentlyFrom the generated background of Memcached, this paper describes the principle of reducing the burden ofdatabase when it's in high load dynamic website and application scene, and a simple application testing of Memcached is made. Then the paper analyzes the advantages of Memcached memory management mode comparedwith traditional memory managementKeywords: Memcached; Memory Cache System; Web Inquiry0引言danga con(运营 LiveJournal I的技能团队)开发的随着社会的进步和信息化技术的不断发展,网套分布式内存对象缓存系统,用于在动态系统中减络用户日益增加,人们利用信息化手段来完成的工少数据库负载,提升性能。作与日俱增,这就使得一些大型的Web应用程序并1 Memcached应用发访问量也急剧增加。快节奏的现代生活要求我们Memcached是一个高性能的分布式内存对象的应用系统能够提供实时性、准确性和高性能的服缓存系统,用于动态Web应用,以减轻数据库负载。务,所以人们想了很多方法来提高Web的响应速它通过在内存中缓存数据和对象来减少读取数据库率,一般的做法有优化数据库、提高硬件的性能、增的次数,从而提高动态、数据库驱动网站的速度。它大带宽等。当这些方法还不能完全解决问题时,内存基于网络连接(当然它也可以运用 Localhost)方式缓存技术是一个不错的选择。随着内存成本的不断完成服务,它是一个独立使用的程序或守护进程下降,使得这个选择更容易让人接受( Daemon方式)。 Memcached运用 Libevent库实现内存缓存的出现是基于操作系统中的一个经典网络连接服务,理论上可以处理无限多的连接,但是理论“在80%的时间里用到的数据只有20%”。所以它和 Apache不同,它更多的时候是面向稳定的持只要把这少部分的数据放到内存,那么应用程序就续连接的所以它实际的并发能力是有限定的。在保直接和内存交换数据,可以使得访问速度提高数个守情况下, Memcached i的大同时连接数为20,这数量级。和 Linux线程能力中国煤化工以调整Memcached是目前杰出的内存缓存技术,它是的。 Memcached FCNMHG不同。APC是基于共享内存和MMAP的, Memcache有自echo"n"str pad (Read datas from MySQL. 60己的内存分配算法和管理方式,它和共享内存没有联系,也没有共享内存的限定。通常情况下,每个Sconnnect-mysql connect(localhost, 'root, ) /Memcached进程可以管理2GB的内存空间。如果连接到mysq需要更多的空间,可以添加进程数。mysql select db(test;∥/选择数据库Memcached仅适用于“分布式”的内存对象缓Result= mysql query($sql);∥/执行查询存系统,也就是说,对于那些不需要“分布”的,不需while(Srow =mysql fetch row(Sresult)要共享的,或者说规模小到只有一台服务器的使用,Sdatas[]= Row;Memcached不会带来任何优点,相反还会降低系统∥将数据库中获取到的结果集数据保存到效率。因为网络连接同样需要资源,即使是UNX本 memcached中,以供下次访问时使用。地连接也一样,所以,如果只是本地级缓存,运用Smc->add(skey, Datas);Memcached是非常不划算的。3 elseMemcached的工作方式是:当用户第一次调用echo"n"str pad (Read datas from memcached程序时,首先查看 Memcached中是否有所需要的数60,)."n";据,如果有直接调用,如果没有则从数据库访问,并}同时写入 Memcached之中,以备日后调用。它的var dump( Datas);∥/输出读取的数据般工作方式可以用图一来表示2 Memcached的链接和测试客户端连接 Memcached和对已写入Mercached的数据的简单操作代码如下∥连接Smem test= new Memcache.S mem test ->connect("localhost", 11211)S mem test ->set (keyl, This is first value, 0,第一次取数据60);∥/保存数据Sval=$ mem test-get(key 1);echo"Get keyl value: Sval.
replace(keyl This is replace val代码实现如下ue,0,60);∥替换数据Sval=S mem test->get(key 1 );Ssql='SELECT FROM test tabkey=" mykey";/ memcached对象标识符S mem test-> delete(keyl);∥删除数据Sval=S mem test->get(keyl,)mc test-> connect(127.0.0.,1121);∥/连接echo"Get keyl value: " Sval "
memcached的服务器S mem test→>ushO;∥/清除所有数据if ( ( Datas= S mc test->get(Skey)))&S mem test-> closed;关闭连接∥在 memcached中未获取到缓存数据,则使用中国煤化工数据库査询获取记录集。3 MemcCNMHGMemH存管理方式有个很有特色的内存管理方式。为了提升效率,它运辅复制机制,让 Memcached具备了事务恢复能力、用预申请以及分组的方式来管理内存空问,从而不持久化能力和分布式复制能力,非常适合于需要超需要每次写入数据的时候去 malloc,删除数据的时高性能读写速度,但是不需要严格事务约束,能够被候fe-个指针。 Memcached采用一种名为Sla持久化保存的应用场景,例如 Memcachedb被应用8bAllocatoion I的机制分配管理内存。它的基本原理在新浪博客上面。 Memcachedb给 Memcached添s是按照预先规定的大小将分配的内存分割成特定加了一些数据库才具备的特性,但是我们还不能说长度的块。采用这种方式管理内存可以很好地避 Memcachedb已经是一个数据库了。这是因为免内存碎片的问题。 Memcached能够申请的最小的 Memcached不支持内存对象的遍历操作,当然更加用内存大小为一个b它的默认大小为M。sb是不能支持复杂的查询操作,只能支持根据已知的究个内存块,是 Memcached一次申请内存的最小单key去查询对应的 value。因此如果想把Mem位。在启动 Memcached的时候可以使用参数-m指 cached当成一个高性能的分布式内存数据库来使定其可用内存,但是并不是在启动的那一刻所有的用的话,查询的问题就没有办法解决,只能在应用程内存就全部分配出去了。只有在需要的时候才会去序里面配合其他方案作一些折中。然而Mem申请,而且每次申请一定是一个 slabo slab的大小固 cached的另外一个开源项目完美地填补了这一个定为M(1048576Bye),一个slab由若干个大小相缺陷就是 Memcache engine等的chun组成。每个 chunk中都保存了一个item结构体和一对key和 value。假定i代表分类, class i参考文献的计算公式如下[l]奥) Michael Kofler,著杨晓云,等译 MySQL5hunk size(dasi- default sizetitem size)*P权威指南(第3版北京:人民邮电出版社,2006HCHUNK ALIGN BYTES[2]MySQL主页Eb/oL].httP://www.mysqlorgdefault size:默认大小为48字节,也就是mem[3]张尧学,史美林计算机操作系统教程[M北cached默认的key+ value的大小为48字节,可以通京:清华大学出版社,2003过-n参数来调节其大小[4]杨立身,曹志文内存缓存技术在门户网站开Item size:item结构体的长度,固定为32字节。发中的应用研究电脑知识与技术:学术交流,fault size大小为48字节, Item size为32,因此2008,(09):1415-1416class 1的 chunk大小为48+32-80字节;f为 factor[5]Memcached主页[EBOL]htp:/danga.com是 chunk变化大小的因素,默认值为1.25,调节f可 Memcached以影响 chunk的步进大小,在启动时可以使用f来[6]Ross A Security Engineering: A Guide to指定; CHUNK ALIGN BYTES是一个修正值,用来 Building Dependable Distributed Systems.John Wi-保证 chunk的大小是某个值的整数倍(在32位机器ley& Sons ISBN0471-389226,2001上要求 chunk的大小是4的整数倍)。[7]Matt Blaze. 2002 September 15(Preprint, re-从上面的分析可以看到,我们实际可以调节的 vised2003 March02). Cryptology and Physical Securi参数有fn。在 Memcached的实际运行中我们还 ty: Rights Amplification in Master-Keyed Mechanical需要观察我们的数据特征,合理地调节f、n的值使 Locks IEEE Security and Privacy (March/April2003)我们的内存得到充分的利用减少浪费。同时,这种[8]Computer Emergency Response Team/Coordi方式避免了与Os的频繁交互,大大提升了效率。 nation Center,200 CERT/CC Vulnerability Metric4结束语因为 Memcached的数据是缓存在内存中的,所作者简介以当发生系统掉电或者重启的时候,这些数据很可徐剑强(1986),男,江西丰城人,主要研究方能会丢失。开发人员很早认识到这点,所以开发出向:高校信息化;了 Memcachedb。它是一个由新浪网的开发人员开邹伟平(1987中国煤化工大学网发出来的开源项目,给 Memcached分布式缓存服务络中心,主要研究YHCNMHG器添加了 Berkeley DB的持久化存储机制和异步主97

论文截图
上一条:MSAN及其应用
版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。