﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-都市淘沙者-文章分类-Ecache/Memcached/XCache</title><link>http://www.blogjava.net/jelver/category/30689.html</link><description>每天进步一点点</description><language>zh-cn</language><lastBuildDate>Tue, 12 Jun 2012 05:45:12 GMT</lastBuildDate><pubDate>Tue, 12 Jun 2012 05:45:12 GMT</pubDate><ttl>60</ttl><item><title>redis list应用–大型网站缓冲队列服务器【转】</title><link>http://www.blogjava.net/jelver/articles/380039.html</link><dc:creator>都市淘沙者</dc:creator><author>都市淘沙者</author><pubDate>Tue, 05 Jun 2012 08:47:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/380039.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/380039.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/380039.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/380039.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/380039.html</trackback:ping><description><![CDATA[<div><a href="http://www.siyebocai.com/blog/view-20110621_kh9p3042.html">redis list应用&#8211;大型网站缓冲队列服务器</a></div><div><div id="blog_content_content">   			 			<p>1. 起因， 随着twitter sina微博，腾讯微博的开放平台相继推出,   大部分和互联网相关的公司又多了一个营销的手段：信息同步。也即是用户把自己的新浪微博账号或者腾讯微博账号和你的网站关联起来了，用户在你的网站产生的  任何信息都可以同步发送到sina微博，qq微博上去（前提是经过用户的允许，这样用户既可以不需要同样的信息复制到多个网站，   又可以相应的推广你的网站的入口曝光率）。目前同步比较好的例子是：微博通，街旁，切客等。<br /> <br /> 2. 为什么要用缓冲队列服务，我们举个例子。如果你做了一个网站，用户在你的网站上关联了sina微博，QQ微博，开心网，人人网，   豆瓣，twitter,   facebook（可能还要在国外设置代理）等等第三方平台，用户产生了一个动作后（比如发了一条心情状态），你的网站要同时同步到这些网站去，每个第三  方平台都要经过多次外网http请求，所有的这些请求加起来是可能是很长的时间(几秒，   甚至几十秒)，这对于前段用户肯定肯定是无法忍受的。所以这个时候同步信息的话必须采取异步的方式，也就是用户在你的网站发表一个状态服务端只是把这条状  体对应的信息存储起来， 然后就提示用户发表成功，   具体的信息同步是后端以脚本的方式异步运行的。用户通俗的话来说就是用户先发表后同步，由于校本执行速度很快，   用户几乎感觉不出来同步的时间差。你也许会问我怎么知道哪些信息要同步到第三方平台去呢，这也就是使用redis使用缓冲队列服务器的原因，当用户发表信  息后，我们同事把信息写入缓冲队列服务器，后台脚本会不停的去检查缓冲队列服务器是否有数据，如果有数据则取出发送到第三方开放平台。</p> <p>3. 系统扩展性<br /> a). 如果脚本处理过慢，可能造成缓冲队列拥堵，我们可能通过扩展后台脚本个数来加快同步到第三方平台的处理速度。<br /> b). 如果需要同步的信息量过大, 造成写入队列的并发数极大，肯能通过扩展队列服务来达到分散减压的目的(基本不会出现)。</p> <p>5. 效率如何 假设你的网站每天产生100W条信息 需要同步到第三方平台。<br /> redis官方测试数据（SET操作每秒钟 110000 次，GET操作每秒钟 81000 次）。<br /> 一个脚本每天的同步量, 86400/2 = 43200, (假设平均每同步一条信息花费时间为2s，) 一个脚本每天大概可以同步4W条数据。<br /> 平均每秒同步的数据 100W/86400 &lt; 12个 高峰时期扩大十倍也就是每秒 120条信息。由此可见每天100W 甚至 1000W的信息同步量对redis来说都是没有任何压力的。<br /> 我们只需要加快脚本处理的速度即可， 100W数据只需要同事25个脚本负责同步即可，（数据量增加了，扩展起来非常方面）。</p> <p>总结，此方式已经应用于国内某LBS社区，每天的PV大概300W，产生的信息同步量每天大概2W左右。当前是2个脚本负责同步相关操作，队列里面基本没有任何拥堵信息。</p></div></div><img src ="http://www.blogjava.net/jelver/aggbug/380039.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">都市淘沙者</a> 2012-06-05 16:47 <a href="http://www.blogjava.net/jelver/articles/380039.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>将MySQL数据映射到Memcached</title><link>http://www.blogjava.net/jelver/articles/291575.html</link><dc:creator>都市淘沙者</dc:creator><author>都市淘沙者</author><pubDate>Mon, 17 Aug 2009 15:32:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/291575.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/291575.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/291575.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/291575.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/291575.html</trackback:ping><description><![CDATA[<p>作者:张立冰<br />
出处:http://www.libing.name/2009/02/06/mysql-map-data-to-memcachedmysql-map-data-to-memcached.html</p>
<p>差不多在一年前，写过一篇文章介绍<a href="http://www.libing.name/2008/02/26/mysql-map-memcached.html" target="_blank">将MySQL数据映射到Memcached</a>，当时MySQL和Memcached Functions for MySQL都还不够成熟，时过一年，<a href="http://tangent.org/586/Memcached_Functions_for_MySQL.html" target="_blank">Memcached Functions for MySQL</a>升级到了0.8版本，而MySQL也发布了GA版本，加上很多朋友反应前一篇文章中的实现他们因种种原因没能成功，于是便有了这篇文章，就当是上一篇文章的升级版本吧。</p>
<p>测试环境在Linux下进行，版本系统为CentOS5.<br />
以下为相关软件，包括其版本和下载地址：</p>
<p>mysql-5.1.30 <a href="http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.30.tar.gz/from/http://mysql.byungsoo.net/" target="_blank">下载</a><br />
memcached-1.2.6 <a href="http://danga.com/memcached/dist/memcached-1.2.6.tar.gz" target="_blank">下载</a><br />
libevent-1.4.7-stable <a href="http://monkey.org/~provos/libevent-1.4.7-stable.tar.gz" target="_blank">下载</a><br />
memcached_functions_mysql-0.8 <a href="http://download.tangent.org/memcached_functions_mysql-0.8.tar.gz" target="_blank">下载</a><br />
libmemcached-0.26 <a href="http://download.tangent.org/libmemcached-0.26.tar.gz" target="_blank">下载</a></p>
<p><br />
编译安装MySQL,安装因个人细好而定，省略许多与测试无关的编译细节及参数。</p>
<div class="wp_syntax" style="padding-bottom: 0px">
<div class="code">
<pre class="c" style="font-family: monospace"><span style="color: #009900">[</span>root@localhost ~<span style="color: #009900">]</span><span style="color: #339933">#tar xzf mysql-5.1.30.tar_001.gz</span>
<span style="color: #009900">[</span>root@localhost ~<span style="color: #009900">]</span><span style="color: #339933">#cd mysql-5.1.30</span>
<span style="color: #009900">[</span>root@localhost ~<span style="color: #009900">]</span><span style="color: #339933">#./configure --prefix=/usr/local/mysql51</span>
<span style="color: #009900">[</span>root@localhost ~<span style="color: #009900">]</span><span style="color: #339933">#make</span>
<span style="color: #009900">[</span>root@localhost ~<span style="color: #009900">]</span><span style="color: #339933">#make install</span>
<span style="color: #009900">[</span>root@localhost ~<span style="color: #009900">]</span><span style="color: #339933">#./scripts/mysql_install_db --user=mysql --skip-name-resolve</span>
<span style="color: #009900">[</span>root@localhost ~<span style="color: #009900">]</span><span style="color: #339933">#/usr/local/mysql51/bin/mysqld_safe</span></pre>
</div>
</div>
<p>省略列出安装memcached和libevent的相关命令，具体可按照实际情况安装，测试时我将libevent默认安装，memcached安装于/usr/local/memcached目录下。<br />
启动memcached.</p>
<div class="wp_syntax" style="padding-bottom: 0px">
<div class="code">
<pre class="c" style="font-family: monospace"><span style="color: #339933">/</span>usr<span style="color: #339933">/</span>local<span style="color: #339933">/</span>memcached<span style="color: #339933">/</span>bin<span style="color: #339933">/</span>memcached <span style="color: #339933">-</span>d <span style="color: #339933">-</span>m <span style="color: #0000dd">50</span> <span style="color: #339933">-</span>u root <span style="color: #339933">-</span>p <span style="color: #0000dd">11211</span></pre>
</div>
</div>
<p>编译安装libmemcache.</p>
<div class="wp_syntax" style="padding-bottom: 0px">
<div class="code">
<pre class="c" style="font-family: monospace"><span style="color: #009900">[</span>root@localhost ~<span style="color: #009900">]</span><span style="color: #339933">#tar xzf libmemcached-0.26.tar.gz</span>
<span style="color: #009900">[</span>root@localhost ~<span style="color: #009900">]</span><span style="color: #339933">#cd libmemcached-0.26</span>
<span style="color: #009900">[</span>root@localhost ~<span style="color: #009900">]</span><span style="color: #339933">#./configure --with-memcached=/usr/local/memcached/bin/memcached</span>
<span style="color: #009900">[</span>root@localhost ~<span style="color: #009900">]</span><span style="color: #339933"># make &amp;&amp; make install</span></pre>
</div>
</div>
<p>编译安装Memcache UDFs for MySQL.</p>
<div class="wp_syntax" style="padding-bottom: 0px">
<div class="code">
<pre class="c" style="font-family: monospace"><span style="color: #009900">[</span>root@localhost ~<span style="color: #009900">]</span><span style="color: #339933"># tar xzf memcached_functions_mysql-0.8.tar.gz</span>
<span style="color: #009900">[</span>root@localhost ~<span style="color: #009900">]</span><span style="color: #339933"># cd memcached_functions_mysql-0.8</span>
<span style="color: #009900">[</span>root@localhost ~<span style="color: #009900">]</span><span style="color: #339933"># ./configure --with-mysql-config=/usr/local/mysql51/bin/mysql_config</span>
<span style="color: #009900">[</span>root@localhost ~<span style="color: #009900">]</span><span style="color: #339933"># make &amp;&amp; make install</span></pre>
</div>
</div>
<p>编译完成后将编译好的库文件复制到mysql的插件目录下，以便于加载使用。</p>
<div class="wp_syntax" style="padding-bottom: 0px">
<div class="code">
<pre class="c" style="font-family: monospace">cp <span style="color: #339933">/</span>usr<span style="color: #339933">/</span>local<span style="color: #339933">/</span>lib<span style="color: #339933">/</span>libmemcached_functions_mysql<span style="color: #339933">*</span> <span style="color: #339933">/</span>usr<span style="color: #339933">/</span>local<span style="color: #339933">/</span>mysql51<span style="color: #339933">/</span>lib<span style="color: #339933">/</span>mysql<span style="color: #339933">/</span>plugin<span style="color: #339933">/</span></pre>
</div>
</div>
<p>进入memcached_functions_mysql的源码目录，在目录下有相关添加UDF的SQL文件用于初始化。</p>
<div class="wp_syntax" style="padding-bottom: 0px">
<div class="code">
<pre class="c" style="font-family: monospace"><span style="color: #009900">[</span>root@localhost ~<span style="color: #009900">]</span><span style="color: #339933"># mysql &lt;sql/install_functions.sql</span></pre>
</div>
</div>
<p>注：如果对这些UDFs不熟悉或者不懂，可进行源码目录参看<a href="http://hg.tangent.org/memcached_functions_mysql/file/724eeccc55bc/README" target="_blank">README</a>，里边有相应的说明。</p>
<p>至此，相关软件的编译和安装完成，进行测试，我们要达到的目的是当MySQL有新记录插入时，同时插入到Memcached中，当记录更新时同步更新Memcached中的记录，删除时同时也删除Memcached相关的记录，为此创建三个触发器来实现，如果对MySQL的触发程序不熟悉可以参考MySQL手册第21章，下面SQL中的memcached为需要操作的表名，SQL如下：</p>
<div class="wp_syntax" style="padding-bottom: 0px">
<div class="code">
<pre class="c" style="font-family: monospace"><span style="color: #339933">#插入数据时插入Memcached</span>
create trigger mysqlmmci after insert on memcached <span style="color: #b1b100">for</span> each row set @tmp <span style="color: #339933">=</span> memc_set<span style="color: #009900">(</span>NEW.<span style="color: #202020">key</span><span style="color: #339933">,</span> NEW.<span style="color: #202020">value</span><span style="color: #009900">)</span><span style="color: #339933">;</span>
<span style="color: #339933">#更新记录时更新Memcached</span>
create trigger mysqlmmcu after update on memcached <span style="color: #b1b100">for</span> each row set @tmp <span style="color: #339933">=</span> memc_set<span style="color: #009900">(</span>NEW.<span style="color: #202020">key</span><span style="color: #339933">,</span> NEW.<span style="color: #202020">value</span><span style="color: #009900">)</span><span style="color: #339933">;</span>
<span style="color: #339933">#删除记录时删除Memcached相应的记录</span>
create trigger mysqlmmcd before delete on memcached <span style="color: #b1b100">for</span> each row set @tmp <span style="color: #339933">=</span> memc_delete<span style="color: #009900">(</span>OLD.<span style="color: #202020">key</span><span style="color: #009900">)</span><span style="color: #339933">;</span></pre>
</div>
</div>
<p>以下为测试记录，在对MySQL操作的同时操作Memcached来查看情况，当然你也可以在启动Memcached的时候带-vv参数来查看相关信息.</p>
<p>MySQL操作相关的记录：</p>
<div class="wp_syntax" style="padding-bottom: 15px">
<div class="code">
<pre class="c" style="font-family: monospace"><span style="color: #009900">[</span>root@localhost ~<span style="color: #009900">]</span><span style="color: #339933">#mysql -S /tmp/mysql51.sock </span>
Welcome to the MySQL monitor.  <span style="color: #202020">Commands</span> end with <span style="color: #339933">;</span> or \g.
<span style="color: #202020">Your</span> MySQL connection id is <span style="color: #0000dd">6</span>
Server version<span style="color: #339933">:</span> 5.1.30 Source distribution
&nbsp;
Type <span style="color: #ff0000">'help;'</span> or <span style="color: #ff0000">'\h'</span> <span style="color: #b1b100">for</span> help. <span style="color: #202020">Type</span> <span style="color: #ff0000">'\c'</span> to clear the buffer.
&nbsp;
<span style="color: #202020">mysql</span><span style="color: #339933">&gt;</span> use test<span style="color: #339933">;</span>
Database changed
&nbsp;
mysql<span style="color: #339933">&gt;</span> create table `memcached` <span style="color: #009900">(</span>`key` varchar<span style="color: #009900">(</span><span style="color: #0000dd">10</span><span style="color: #009900">)</span><span style="color: #339933">,</span> `value` varchar<span style="color: #009900">(</span><span style="color: #0000dd">100</span><span style="color: #009900">)</span><span style="color: #009900">)</span><span style="color: #339933">;</span>
Query OK<span style="color: #339933">,</span> <span style="color: #0000dd">0</span> rows affected <span style="color: #009900">(</span><span style="color: #800080">0.00</span> sec<span style="color: #009900">)</span>
&nbsp;
mysql<span style="color: #339933">&gt;</span> create trigger mysqlmmci after insert on memcached <span style="color: #b1b100">for</span> each row set @tmp <span style="color: #339933">=</span> memc_set<span style="color: #009900">(</span>NEW.<span style="color: #202020">key</span><span style="color: #339933">,</span> NEW.<span style="color: #202020">value</span><span style="color: #009900">)</span><span style="color: #339933">;</span>
Query OK<span style="color: #339933">,</span> <span style="color: #0000dd">0</span> rows affected <span style="color: #009900">(</span><span style="color: #800080">0.00</span> sec<span style="color: #009900">)</span>
&nbsp;
mysql<span style="color: #339933">&gt;</span> create trigger mysqlmmcu after update on memcached <span style="color: #b1b100">for</span> each row set @tmp <span style="color: #339933">=</span> memc_set<span style="color: #009900">(</span>NEW.<span style="color: #202020">key</span><span style="color: #339933">,</span> NEW.<span style="color: #202020">value</span><span style="color: #009900">)</span><span style="color: #339933">;</span>
Query OK<span style="color: #339933">,</span> <span style="color: #0000dd">0</span> rows affected <span style="color: #009900">(</span><span style="color: #800080">0.00</span> sec<span style="color: #009900">)</span>
&nbsp;
mysql<span style="color: #339933">&gt;</span> create trigger mysqlmmcd before delete on memcached <span style="color: #b1b100">for</span> each row set @tmp <span style="color: #339933">=</span> memc_delete<span style="color: #009900">(</span>OLD.<span style="color: #202020">key</span><span style="color: #009900">)</span><span style="color: #339933">;</span>
Query OK<span style="color: #339933">,</span> <span style="color: #0000dd">0</span> rows affected <span style="color: #009900">(</span><span style="color: #800080">0.00</span> sec<span style="color: #009900">)</span>
&nbsp;
mysql<span style="color: #339933">&gt;</span> insert into memcached values<span style="color: #009900">(</span><span style="color: #ff0000">"keyi"</span><span style="color: #339933">,</span> <span style="color: #ff0000">"valuei"</span><span style="color: #009900">)</span><span style="color: #339933">,</span><span style="color: #009900">(</span><span style="color: #ff0000">"keyu"</span><span style="color: #339933">,</span><span style="color: #ff0000">"valueu"</span><span style="color: #009900">)</span><span style="color: #339933">,</span><span style="color: #009900">(</span><span style="color: #ff0000">"keyd"</span><span style="color: #339933">,</span> <span style="color: #ff0000">"valued"</span><span style="color: #009900">)</span><span style="color: #339933">;</span>
Query OK<span style="color: #339933">,</span> <span style="color: #0000dd">3</span> rows affected <span style="color: #009900">(</span><span style="color: #800080">0.00</span> sec<span style="color: #009900">)</span>
Records<span style="color: #339933">:</span> <span style="color: #0000dd">3</span>  Duplicates<span style="color: #339933">:</span> <span style="color: #0000dd">0</span>  Warnings<span style="color: #339933">:</span> <span style="color: #0000dd">0</span>
&nbsp;
mysql<span style="color: #339933">&gt;</span> update memcached set `value`<span style="color: #339933">=</span><span style="color: #ff0000">"update"</span> where `key`<span style="color: #339933">=</span><span style="color: #ff0000">"keyu"</span><span style="color: #339933">;</span>
Query OK<span style="color: #339933">,</span> <span style="color: #0000dd">1</span> row affected <span style="color: #009900">(</span><span style="color: #800080">0.00</span> sec<span style="color: #009900">)</span>
Rows matched<span style="color: #339933">:</span> <span style="color: #0000dd">1</span>  Changed<span style="color: #339933">:</span> <span style="color: #0000dd">1</span>  Warnings<span style="color: #339933">:</span> <span style="color: #0000dd">0</span>
&nbsp;
mysql<span style="color: #339933">&gt;</span> delete from memcached where `key`<span style="color: #339933">=</span><span style="color: #ff0000">"keyd"</span><span style="color: #339933">;</span>
Query OK<span style="color: #339933">,</span> <span style="color: #0000dd">1</span> row affected <span style="color: #009900">(</span><span style="color: #800080">0.00</span> sec<span style="color: #009900">)</span>
&nbsp;
mysql<span style="color: #339933">&gt;</span> quit
Bye</pre>
</div>
</div>
<p>Memcache查看时的记录：</p>
<div class="wp_syntax" style="padding-bottom: 0px">
<div class="code">
<pre class="c" style="font-family: monospace"><span style="color: #009900">[</span>root@localhost ~<span style="color: #009900">]</span><span style="color: #339933">#telnet 127.0.0.1 11211</span>
Trying 127.0.0.1...
<span style="color: #202020">Connected</span> to 127.0.0.1.
<span style="color: #202020">Escape</span> character is <span style="color: #ff0000">'^]'</span>.
<span style="color: #202020">get</span> keyi
VALUE keyi <span style="color: #0000dd">0</span> <span style="color: #0000dd">6</span>
valuei
END
get keyu
VALUE keyu <span style="color: #0000dd">0</span> <span style="color: #0000dd">6</span>
valueu
END
get keyd
VALUE keyd <span style="color: #0000dd">0</span> <span style="color: #0000dd">6</span>
valued
END
get keyu
VALUE keyu <span style="color: #0000dd">0</span> <span style="color: #0000dd">6</span>
update
END
get keyd
END
quit
Connection closed by foreign host.</pre>
</div>
</div>
<p>至此，我们基本实现的将MySQL的数据同步到Memcached中，性能暂时还没有测试，当然上面只是简单的实现的数据映射的功能，如果在实现的生产环境中，则需要考虑名字空间，高可靠性的问题，这些都是可以通过数据库名-表名-关键字的方面能达到KEY唯一的目的，而高可靠性则是一个比较大的问题。</p>
<img src ="http://www.blogjava.net/jelver/aggbug/291575.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">都市淘沙者</a> 2009-08-17 23:32 <a href="http://www.blogjava.net/jelver/articles/291575.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>memcached 1.2 内存模型图(zhuan)</title><link>http://www.blogjava.net/jelver/articles/191662.html</link><dc:creator>都市淘沙者</dc:creator><author>都市淘沙者</author><pubDate>Wed, 09 Apr 2008 04:47:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/191662.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/191662.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/191662.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/191662.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/191662.html</trackback:ping><description><![CDATA[<div class="cnt">参考了以下资源和 memcached-1.2.5的源代码，画了一个<a href="http://hi.baidu.com/jabber/blog/category/Memcached" target="_blank">memcached</a>模型图，作为下面资源的补充。<br />
slab内存模型的优点(减少碎片，速度快)和缺点(有空间浪费)下面的链接里面都有讲，Tim也没有什么新观点，就不重复了。<br />
<div forimg="1"><img class="blogimg" src="http://hiphotos.baidu.com/jabber/pic/item/34d98a26057fdf078b82a161.jpg" border="0" small="0"  alt="" /></div>
<br />
参考资源：<br />
Current memcached memory management:<br />
<a href="http://lists.danga.com/pipermail/memcached/2003-September/000214.html">http://lists.danga.com/pipermail/memcac<wbr></wbr>hed/2003-September/000214.html</a><br />
<br />
LRU淘汰算法只是在每个SLAB内部使用，下面文章说将来版本考虑使用一个全局LRU淘汰算法。<br />
New proposal:<br />
<a href="http://lists.danga.com/pipermail/memcached/2003-October/000302.html">http://lists.danga.com/pipermail/memcac<wbr></wbr>hed/2003-October/000302.html</a><br />
<br />
<span class="smalltxt"><span class="bold">还有一篇网上流传比较多的中文的文章，写得很详细，包括hash算法都有介绍。<a href="http://www.phpx.com/happy/viewthread.php?tid=131124" target="_blank">Memcached深度分析</a><br />
<br />
3/8补充：<br />
看到另外一个白板图</span></span><span class="smalltxt"><span class="bold"><a href="http://atman.memoab.com/articles/213" target="_blank">memcache使用小结</a>,具体内容和我的基本类似。<br />
<div forimg="1"><img class="blogimg" src="http://atman.memoab.com/wp-content/uploads/2007/04/memcached.JPG" border="0" small="0"  alt="" /></div>
</span></span></div>
<img src ="http://www.blogjava.net/jelver/aggbug/191662.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">都市淘沙者</a> 2008-04-09 12:47 <a href="http://www.blogjava.net/jelver/articles/191662.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>