<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="Memcached深度分析" id="card1">
<p> 游客</p><p>
标题:Memcached深度分析<br/>
正文:<br/>
Memcached是danga.com（运营LiveJournal的技术团队）开发的一套分布式内存对象缓存系统，用于在动态系统中减少数据库负载，提升性能。关于这个东西，相信很多人都用过，本文意在通过对memcached的实现及代码分析，获得对这个出色的开源软件更深入的了解，并可以根据我们的需要对其进行更进一步的优化。末了将通过对BSM_Memcache扩展的分析，加深对memcached的使用方式理解。本文的部分内容可能需要比较好的数学基础作为辅助。◎Memcached是什么在阐述这个问题之前，我们首先要清楚它&amp;ldquo;不是什么&amp;rdquo;。很多人把它当作和SharedMemory那种形式的存储载体来使用，虽然memcached使用了同样的&amp;ldquo;Key=&amp;gt;Value&amp;rdquo;方式组织数据，但是它和共享内存、APC等本地缓存有非常大的区别。Memcached是分布式的，也就是说它不是本地的。它基于网络连接（当然它也可以使用localhost）方式完成服务，本身它是一个独立于应用的程序或守护进程（Daemon方式）。Memcached使用libevent库实现网络连接服务，理论上可以处理无限多的连接，但是它和Apache不同，它更多的时候是面向稳定的持续连接的，所以它实际的并发能力是有限制的。在保守情况下memcached的最大同时连接数为200，这和Linux线程能力有关系，这个数值是可以调整的。关于libevent可以参考相关文档。 Memcached内存使用方式也和APC不同。APC是基于共享内存和MMAP的，memcachd有自己的内存分配算法和管理方式，它和共享内存没有关系，也没有共享内存的限制，通常情况下，每个memcached进程可以管理2GB的内存空间，如果需要更多的空间，可以增加进程数。◎Memcached适合什么场合在很多时候，memcached都被滥用了，这当然少不了对它的抱怨。我经常在论坛上看见有人发贴，类似于&amp;ldquo;如何提高效率&amp;rdquo;，回复是&amp;ldquo;用memcached&amp;rdquo;，至于怎么用，用在哪里，用来干什么一句没有。memcached不是万能的，它也不是适用在所有场合。Memcached是&amp;ldquo;分布式&amp;rdquo;的内存对象缓存系统，那么就是说，那些不需要&amp;ldquo;分布&amp;rdqu<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=341&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=341&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=341&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=341&amp;Page=3">[3]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=341&amp;Page=33">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=341">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=341">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>