<div>Hi I have been given the job of implementing memcached for our site and was wondering if I have the right idea about how to go about it. Sorry if this is a bit long!</div>
<div>&nbsp;</div>
<div>Our site consists of a whole load of forums and similar. Looking up the data for a forum page requires several joins (to get the user name of the current user, etc. etc).</div>
<div>&nbsp;</div>
<div>Lets say an item like &quot;select a.*, b.*&nbsp;FROM&nbsp;a inner join b on b.foreignKey = a.key where a.key = 154&quot;. I would hash the sql and store this in memcached. Now I can get that result back anytime. So far so good.
</div>
<div>&nbsp;</div>
<div>Now I read the stuff about implementing namespaces in memcached so you can do an invalidate a namespace with a single call. I can see how this can be used to clear memcached entries when they correspond to an item with a dependency, but the query above needs to be invalidated if the a row changes, or if any of the linked b rows change - in essence requiring multiple namespaces for each memcached item.
</div>
<div>&nbsp;</div>
<div>Is is better to&nbsp;</div>
<div>1. cache every database row as a unique item and do all joins in memory on the application server, getting missing objects from the database in batches&nbsp;</div>
<div>2. to implement a layer providing multiple namespaces for each memcached item which will be quite costly in terms of memcached lookups and/or CPU time or</div>
<div>3. bark up a different tree ?</div>
<div>&nbsp;</div>
<div>thanks for your time everyone!</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>