<div>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">
<div style="WORD-WRAP: break-word">
<div>I just did some hand-wavy math on that:</div>
<div><br>&nbsp;</div>
<div>
<div>&gt;&gt;&gt; import random</div>
<div>&gt;&gt;&gt; r=random.Random()</div>
<div>&gt;&gt;&gt; import sets</div>
<div>&gt;&gt;&gt; s=sets.Set([r.randint(1, 10000000) for x in range(30000)])</div>
<div>&gt;&gt;&gt; len(s)</div>
<div>29950</div>
<div>&gt;&gt;&gt; len(&#39;,&#39;.join([str(i) for i in s]))</div>
<div>236301</div>
<div>&gt;&gt;&gt; import zlib</div>
<div>
<div>&gt;&gt;&gt; compressed=zlib.compress(&#39;,&#39;.join([str(i) for i in s]), 9)</div>
<div>&gt;&gt;&gt; len(compressed)</div>
<div>109568</div><br>&nbsp;</div></div>
<div><span style="WHITE-SPACE: pre"></span>So, a user with about 30k friends with numeric IDs fairly even distributed from 1 to 10,000,000 (my average ID was&nbsp;4,979,961, min was 236, max was 9,999,931) would take a little over 100k of cache when comma separated and compressed.
</div>
<div><br>&nbsp;</div>
<div><span style="WHITE-SPACE: pre"></span>I would expect the normal case to be much smaller.</div></div></blockquote>
<div>&nbsp;</div>
<div>Great analysis!</div>
<div>&nbsp;</div>
<div>Thinking further on this issue though, gives me more questions...</div>
<div>&nbsp;</div>
<div>Storing a list of a user&#39;s friends in a Memcache array, then getting them back in and searching through them... while it avoids the database altogether, wouldn&#39;t it be sorta slow?&nbsp; For instance, every time a user visits user B&#39;s profile page, the system would need to iterate through this array and see if they are connected.&nbsp;
</div>
<div>&nbsp;</div>In this case would it be just better to have a heap mysql database and query that instead?<br>&nbsp;</div>