<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Fun With memcache</title>
	<atom:link href="http://www.logicsupply.com/blog/2007/11/02/fun-with-memcache/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.logicsupply.com/blog/2007/11/02/fun-with-memcache/</link>
	<description>Logic Supply corporate weblog</description>
	<lastBuildDate>Tue, 27 Jul 2010 13:31:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: david</title>
		<link>http://www.logicsupply.com/blog/2007/11/02/fun-with-memcache/comment-page-1/#comment-178</link>
		<dc:creator>david</dc:creator>
		<pubDate>Mon, 05 Nov 2007 14:24:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.logicsupply.com/blog/2007/11/02/fun-with-memcache/#comment-178</guid>
		<description>Hey Dormando,

Thanks for the mentioning the caveats with memcachefs.  I&#039;ve only used it a few times during development and it does seem very unreliable.  When it works, it seems to work OK, but it often just refuses to mount altogether.  Seems like maybe it could use a little more time in the oven...

As for my complaints about memcache in general, you make some good points; here at Logic Supply we&#039;ll end up having a relatively low number of cached items so doing a &quot;table scan&quot; would probably not adversely affect our performance, but I can certainly understand how it would on sites with much larger caches.  Like you mention, if necessary it&#039;s not that difficult to add some sort of key tracking or reporting in a wrapper layer.  I&#039;m just lazy by nature so I in general I just want everything to work the way I expect it to :)</description>
		<content:encoded><![CDATA[<p>Hey Dormando,</p>
<p>Thanks for the mentioning the caveats with memcachefs.  I&#8217;ve only used it a few times during development and it does seem very unreliable.  When it works, it seems to work OK, but it often just refuses to mount altogether.  Seems like maybe it could use a little more time in the oven&#8230;</p>
<p>As for my complaints about memcache in general, you make some good points; here at Logic Supply we&#8217;ll end up having a relatively low number of cached items so doing a &#8220;table scan&#8221; would probably not adversely affect our performance, but I can certainly understand how it would on sites with much larger caches.  Like you mention, if necessary it&#8217;s not that difficult to add some sort of key tracking or reporting in a wrapper layer.  I&#8217;m just lazy by nature so I in general I just want everything to work the way I expect it to <img src='https://www.logicsupply.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dormando</title>
		<link>http://www.logicsupply.com/blog/2007/11/02/fun-with-memcache/comment-page-1/#comment-171</link>
		<dc:creator>Dormando</dc:creator>
		<pubDate>Mon, 05 Nov 2007 08:42:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.logicsupply.com/blog/2007/11/02/fun-with-memcache/#comment-171</guid>
		<description>Hey! :) I shop here occasionally, found the blog, and can&#039;t help but comment on a few things.

memcachefs) Be super careful about using this one, in fact I&#039;d highly recommend against it. It&#039;s a nice proof of concept but real world performance would be terrible.

A few reasons after a cursory glance at it:
1) It doesn&#039;t appear to handle nonblock very well. Get two queries going at once and you might be screwed.
2) It relies on libmemcache (not the recent libmemcached), which does totally awesome things such as call &#039;exit()&#039; and &#039;assert()&#039; during some error conditions.
3) The &quot;directory listing&quot; it does uses an internal slab debugging command. It&#039;s very slow and truncates the data it displays, so if you were to rely on it and your data became larger than a couple dozen variables, you&#039;d be screwed.

I do kind of wish there were more extended memcached libraries now :) Namespacing, lists, troubleshooting, etc, are all common enough operations that many good examples should just already exist.

Consider it a good thing we&#039;ve resisted adding a keys dump for so long! :) Like sometimes when learning a new language, you have to adjust your expectations a little. The common debugging idea might be to dump all keys and inspect what&#039;s there, but it&#039;s just as easy (albeit different) to add a debugging mode to your abstraction to count hits/misses. Must more flexible, and performant!

Memcached is fast because it lacks many database concepts (such as multiversioning), so the idea of doing a &quot;Table scan&quot; on potentially millions of keys is something we would prefer folks not build into applications by accident. Imagine how grumpy people would be if they built their fancy new toy with that &quot;super scalable&quot; memcached thing and it _still_ broke after they got a half million keys in it :) Tsk tsk!

That being said, I believe &#039;tag&#039; support is actually on the way this time, which should help with namespacing complexity.</description>
		<content:encoded><![CDATA[<p>Hey! <img src='https://www.logicsupply.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I shop here occasionally, found the blog, and can&#8217;t help but comment on a few things.</p>
<p>memcachefs) Be super careful about using this one, in fact I&#8217;d highly recommend against it. It&#8217;s a nice proof of concept but real world performance would be terrible.</p>
<p>A few reasons after a cursory glance at it:<br />
1) It doesn&#8217;t appear to handle nonblock very well. Get two queries going at once and you might be screwed.<br />
2) It relies on libmemcache (not the recent libmemcached), which does totally awesome things such as call &#8216;exit()&#8217; and &#8216;assert()&#8217; during some error conditions.<br />
3) The &#8220;directory listing&#8221; it does uses an internal slab debugging command. It&#8217;s very slow and truncates the data it displays, so if you were to rely on it and your data became larger than a couple dozen variables, you&#8217;d be screwed.</p>
<p>I do kind of wish there were more extended memcached libraries now <img src='https://www.logicsupply.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Namespacing, lists, troubleshooting, etc, are all common enough operations that many good examples should just already exist.</p>
<p>Consider it a good thing we&#8217;ve resisted adding a keys dump for so long! <img src='https://www.logicsupply.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Like sometimes when learning a new language, you have to adjust your expectations a little. The common debugging idea might be to dump all keys and inspect what&#8217;s there, but it&#8217;s just as easy (albeit different) to add a debugging mode to your abstraction to count hits/misses. Must more flexible, and performant!</p>
<p>Memcached is fast because it lacks many database concepts (such as multiversioning), so the idea of doing a &#8220;Table scan&#8221; on potentially millions of keys is something we would prefer folks not build into applications by accident. Imagine how grumpy people would be if they built their fancy new toy with that &#8220;super scalable&#8221; memcached thing and it _still_ broke after they got a half million keys in it <img src='https://www.logicsupply.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Tsk tsk!</p>
<p>That being said, I believe &#8216;tag&#8217; support is actually on the way this time, which should help with namespacing complexity.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
