<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>phphot - PHPHOT-Memcache</title><link>http://blog.csdn.net/phphot/category/355094.aspx</link><description /><dc:language>zh-CN</dc:language><lastUpdateTime>Tue, 19 Aug 2008 22:16:00 GMT</lastUpdateTime><ttl>60</ttl><item><dc:creator>phphot</dc:creator><title>Memcache Hash算法值得探索的内容</title><link>http://blog.csdn.net/phphot/archive/2008/08/19/2798662.aspx</link><pubDate>Tue, 19 Aug 2008 22:11:00 GMT</pubDate><guid>http://blog.csdn.net/phphot/archive/2008/08/19/2798662.aspx</guid><wfw:comment>http://blog.csdn.net/phphot/comments/2798662.aspx</wfw:comment><comments>http://blog.csdn.net/phphot/archive/2008/08/19/2798662.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/phphot/comments/commentRss/2798662.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2798662</trackback:ping><description>&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: 宋体;"&gt;集团内部很多团队都使用&lt;/span&gt;Memcache&lt;span style="font-family: 宋体;"&gt;来提高应用性能，最近的一次工作汇报中提及了&lt;/span&gt;Memcache&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;Hash&lt;span style="font-family: 宋体;"&gt;算法需要研究来满足一些需求，同时提高&lt;/span&gt;Memcache&lt;span style="font-family: 宋体;"&gt;的利用效率。讨论了一下最后自己总结了这么几点是对&lt;/span&gt;Hash&lt;span style="font-family: 宋体;"&gt;算法需要着重考虑的。&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: 宋体;"&gt;问题：&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left: 39.75pt; text-indent: -18pt;"&gt;1.&lt;spa&lt;img src ="http://blog.csdn.net/phphot/aggbug/2798662.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>phphot</dc:creator><title>Memcached深度分析</title><link>http://blog.csdn.net/phphot/archive/2008/08/07/2781312.aspx</link><pubDate>Thu, 07 Aug 2008 11:52:00 GMT</pubDate><guid>http://blog.csdn.net/phphot/archive/2008/08/07/2781312.aspx</guid><wfw:comment>http://blog.csdn.net/phphot/comments/2781312.aspx</wfw:comment><comments>http://blog.csdn.net/phphot/archive/2008/08/07/2781312.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/phphot/comments/commentRss/2781312.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2781312</trackback:ping><description>Memcached深度分析


作者：NP博士
原文发表于：http://www.54np.com/

Memcached是danga.com（运营LiveJournal的技术团队）开发的一套分布式内存对象缓存系统，用于在动态系统中减少数据库负载，提升性能。关于这个东西，相信很多人都用过，本文意在通过对memcached的实现及代码分析，获得对这个出色的开源软件更深入的了解，并可以根据我们的需要对其进行更进一步的优化。末了将通过对BSM_Memcache扩展的分析，加深对memcached的使用方式理解。

本文的部分内容可能需要比较好的数学基础作为辅助。

◎Memcached是什么

在阐述这个问题之前，我们首先要清楚它“不是什么”。很多人把它当作和SharedMemory那种形式的存储载体来使用，虽然memcached使用了同样的“Key=&gt;Value”方式组织数据，但是它和共享内存、APC等本地缓存有非常大的区别。Memcached是分布式的，也就是说它不是本地的。它基于网络连接（当然它也可以使用localhost）方式完成服务，本身它是一个独立于应用的&lt;img src ="http://blog.csdn.net/phphot/aggbug/2781312.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>phphot</dc:creator><title>最简便的清空memcache的方法</title><link>http://blog.csdn.net/phphot/archive/2008/07/26/2713943.aspx</link><pubDate>Sat, 26 Jul 2008 12:39:00 GMT</pubDate><guid>http://blog.csdn.net/phphot/archive/2008/07/26/2713943.aspx</guid><wfw:comment>http://blog.csdn.net/phphot/comments/2713943.aspx</wfw:comment><comments>http://blog.csdn.net/phphot/archive/2008/07/26/2713943.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/phphot/comments/commentRss/2713943.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2713943</trackback:ping><description>如果要清空memcache的items，常用的办法是什么？杀掉重启？如果有n台memcache需要重启怎么办？挨个做一遍？

很简单，假设memcached运行在本地的11211端口，那么跑一下命令行：

$ echo ”flush_all” | nc localhost 11211

注：flush并不会将items删除，只是将所有的items标记为expired。

原文：Flushing memcached servers the easy way&lt;img src ="http://blog.csdn.net/phphot/aggbug/2713943.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>phphot</dc:creator><title>关于memcached out of memory这个错误</title><link>http://blog.csdn.net/phphot/archive/2008/07/26/2713925.aspx</link><pubDate>Sat, 26 Jul 2008 12:33:00 GMT</pubDate><guid>http://blog.csdn.net/phphot/archive/2008/07/26/2713925.aspx</guid><wfw:comment>http://blog.csdn.net/phphot/comments/2713925.aspx</wfw:comment><comments>http://blog.csdn.net/phphot/archive/2008/07/26/2713925.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/phphot/comments/commentRss/2713925.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2713925</trackback:ping><description>http://www.ooso.net/index.php/archives/444
提到的问题，如果我没记错的话，我们在07年初开始部署Memcache的时候确实也有。我斗胆放出当时的一些修改记录。发现这个问题的是我的BOSS, 当时还没开始部署Memcache，BOSS在阅读源代码的时候发现了其中的问题，就如这篇日志所描述的，内存分配问题。

当时和我一起参与项目2位C高手对Memcache的内存分配代码做了一些修改，将MC的内存不均，改为定长分配内存。不过每次使用MC的时候都要根据所 设置数据的大小进行合理的修改，并重新MAKE安装以便使MC的内存可以充分使用完所设置的，不会像这篇日志所说的会有使不完但内存又不足的情况。局限性 就是不同的项目不能混用MC，否则内存容量就乱了。参与修改的是小马哥，和奶瓶，我是项目负责人，在完成项目后将修改做了详尽记录以便在部署MC的时候不 会出现遗漏。

在我们部门后来做的MDB上已经没有这个问题了，因为用的是BDB的内存管理。这些老资料基本已经无用了，因为我们都在使用MDB，纯的MC业务应该是没有了。

2．Memcached定长版&lt;img src ="http://blog.csdn.net/phphot/aggbug/2713925.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>phphot</dc:creator><title>分布式缓存BeIT Memcached简介</title><link>http://blog.csdn.net/phphot/archive/2008/07/17/2668619.aspx</link><pubDate>Thu, 17 Jul 2008 22:53:00 GMT</pubDate><guid>http://blog.csdn.net/phphot/archive/2008/07/17/2668619.aspx</guid><wfw:comment>http://blog.csdn.net/phphot/comments/2668619.aspx</wfw:comment><comments>http://blog.csdn.net/phphot/archive/2008/07/17/2668619.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/phphot/comments/commentRss/2668619.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2668619</trackback:ping><description>或许你还没有用到过分布式缓存，在web集群的情况下，它可以很好的让一部分常用数据常驻服务器内存而不用担心各台web不同步。下面稍微介绍一下beitmemcached对于.net的支持，官方参考http://code.google.com/p/beitmemcached/一个完整的操作步骤：1、点击上面页面的downloads，把Memcached_1.2.5.zip 和BeITMemcached_source_2008_05_31.zip两个压缩包下在下来。2、解压Memcached_1.2.5.zip ，它是memcached的服务器端。3、把Memcached_1.2.5复制到你指定的做为缓存服务器的电脑上，比如叫做192.168.0.1。4、cmd下运行类似命令 'd:\memcached\memcached.exe -d install' 安装服务器端，这时候它应该会出现在windows服务中5、cmd下运行类似命令 'd:\memcached\memcached.exe -d start'启动服务，看服务器进程中是否有memcached进程&lt;img src ="http://blog.csdn.net/phphot/aggbug/2668619.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>phphot</dc:creator><title>memcache_engine + memcachedb = 高性能分布式内存数据库</title><link>http://blog.csdn.net/phphot/archive/2008/06/28/2594835.aspx</link><pubDate>Sat, 28 Jun 2008 18:05:00 GMT</pubDate><guid>http://blog.csdn.net/phphot/archive/2008/06/28/2594835.aspx</guid><wfw:comment>http://blog.csdn.net/phphot/comments/2594835.aspx</wfw:comment><comments>http://blog.csdn.net/phphot/archive/2008/06/28/2594835.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/phphot/comments/commentRss/2594835.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2594835</trackback:ping><description>memcachedb是一个由新浪网的开发人员开放出来的开源项目，给memcached分布式缓存服务器添加了Berkeley DB的持久化存储机制和异步主辅复制机制，让memcached具备了事务恢复能力、持久化能力和分布式复制能力，非常适合于需要超高性能读写速度，但是不需要严格事务约束，能够被持久化保存的应用场景，例如memcachedb被应用在新浪博客上面。 &lt;img src ="http://blog.csdn.net/phphot/aggbug/2594835.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>phphot</dc:creator><title>Memcached使用点滴 </title><link>http://blog.csdn.net/phphot/archive/2008/06/05/2515359.aspx</link><pubDate>Thu, 05 Jun 2008 23:32:00 GMT</pubDate><guid>http://blog.csdn.net/phphot/archive/2008/06/05/2515359.aspx</guid><wfw:comment>http://blog.csdn.net/phphot/comments/2515359.aspx</wfw:comment><comments>http://blog.csdn.net/phphot/archive/2008/06/05/2515359.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/phphot/comments/commentRss/2515359.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2515359</trackback:ping><description>       我对于Memcached的接触，还是在去年看了CSDN的一系列国外大型网站架构设计而开始的。最初的时候只是简单的封装了Memcached Java版的客户端，主要是对于配置的简化以及Memcached多点备份作了一些工作，然后就作为ASF的组件一部分提供给其他Team使用。其实看过 Memcached Java客户端代码的人就会了解其实客户端的事情很简单，就是要有一套高性能的Socket通信框架以及对Memcached的私有协议实现的接口，自己去做这些事情也是很简单的，不过既然有可以满足自己需求的开源部分，那么就去实现自己需要的但没有实现的。这里我用的是Whalin的客户端版本，这里为什么还要提出来讲这个，后面会提到。&lt;img src ="http://blog.csdn.net/phphot/aggbug/2515359.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>phphot</dc:creator><title>memcache_engine + memcachedb = 高性能分布式内存数据库</title><link>http://blog.csdn.net/phphot/archive/2008/05/08/2416012.aspx</link><pubDate>Thu, 08 May 2008 13:40:00 GMT</pubDate><guid>http://blog.csdn.net/phphot/archive/2008/05/08/2416012.aspx</guid><wfw:comment>http://blog.csdn.net/phphot/comments/2416012.aspx</wfw:comment><comments>http://blog.csdn.net/phphot/archive/2008/05/08/2416012.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/phphot/comments/commentRss/2416012.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2416012</trackback:ping><description>memcachedb是一个由新浪网的开发人员开放出来的开源项目，给memcached分布式缓存服务器添加了Berkeley DB的持久化存储机制和异步主辅复制机制，让memcached具备了事务恢复能力、持久化能力和分布式复制能力，非常适合于需要超高性能读写速度，但是不需要严格事务约束，能够被持久化保存的应用场景，例如memcachedb被应用在新浪博客上面。 &lt;img src ="http://blog.csdn.net/phphot/aggbug/2416012.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>phphot</dc:creator><title>Memcache的使用和协议分析详解</title><link>http://blog.csdn.net/phphot/archive/2007/12/25/1966203.aspx</link><pubDate>Tue, 25 Dec 2007 12:38:00 GMT</pubDate><guid>http://blog.csdn.net/phphot/archive/2007/12/25/1966203.aspx</guid><wfw:comment>http://blog.csdn.net/phphot/comments/1966203.aspx</wfw:comment><comments>http://blog.csdn.net/phphot/archive/2007/12/25/1966203.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/phphot/comments/commentRss/1966203.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=1966203</trackback:ping><description>Memcache的使用和协议分析详解&lt;img src ="http://blog.csdn.net/phphot/aggbug/1966203.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>phphot</dc:creator><title>Discuz!的Memcache缓存实现</title><link>http://blog.csdn.net/phphot/archive/2007/12/19/1953192.aspx</link><pubDate>Wed, 19 Dec 2007 10:47:00 GMT</pubDate><guid>http://blog.csdn.net/phphot/archive/2007/12/19/1953192.aspx</guid><wfw:comment>http://blog.csdn.net/phphot/comments/1953192.aspx</wfw:comment><comments>http://blog.csdn.net/phphot/archive/2007/12/19/1953192.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blog.csdn.net/phphot/comments/commentRss/1953192.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=1953192</trackback:ping><description>Discuz!的Memcache缓存实现&lt;img src ="http://blog.csdn.net/phphot/aggbug/1953192.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>phphot</dc:creator><title>Windows下的Memcache安装</title><link>http://blog.csdn.net/phphot/archive/2007/12/19/1953189.aspx</link><pubDate>Wed, 19 Dec 2007 10:45:00 GMT</pubDate><guid>http://blog.csdn.net/phphot/archive/2007/12/19/1953189.aspx</guid><wfw:comment>http://blog.csdn.net/phphot/comments/1953189.aspx</wfw:comment><comments>http://blog.csdn.net/phphot/archive/2007/12/19/1953189.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/phphot/comments/commentRss/1953189.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=1953189</trackback:ping><description>Windows下的Memcache安装&lt;img src ="http://blog.csdn.net/phphot/aggbug/1953189.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>phphot</dc:creator><title>Linux下的Memcache安装</title><link>http://blog.csdn.net/phphot/archive/2007/12/19/1953175.aspx</link><pubDate>Wed, 19 Dec 2007 10:42:00 GMT</pubDate><guid>http://blog.csdn.net/phphot/archive/2007/12/19/1953175.aspx</guid><wfw:comment>http://blog.csdn.net/phphot/comments/1953175.aspx</wfw:comment><comments>http://blog.csdn.net/phphot/archive/2007/12/19/1953175.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/phphot/comments/commentRss/1953175.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=1953175</trackback:ping><description>Linux下的Memcache安装&lt;img src ="http://blog.csdn.net/phphot/aggbug/1953175.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>phphot</dc:creator><title>Memcache基础教程</title><link>http://blog.csdn.net/phphot/archive/2007/12/19/1953171.aspx</link><pubDate>Wed, 19 Dec 2007 10:41:00 GMT</pubDate><guid>http://blog.csdn.net/phphot/archive/2007/12/19/1953171.aspx</guid><wfw:comment>http://blog.csdn.net/phphot/comments/1953171.aspx</wfw:comment><comments>http://blog.csdn.net/phphot/archive/2007/12/19/1953171.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/phphot/comments/commentRss/1953171.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=1953171</trackback:ping><description>Memcache基础教程&lt;img src ="http://blog.csdn.net/phphot/aggbug/1953171.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>