I am baffled by these new trends. I have seen websites that need scalability cache all the DB queries in memcached, but the queries didn't have any large degree of temporal locality. How is this supposed to do anything other than move the database into memory? Shouldn't the DBMS already do that by itself? The only benefit I can see is that the queries would be memoized instead of having to be run again and again, but I'm not sure that would be such a great advantage if the entire DB was loaded in memory.
Anyway, I'm just thinking aloud here, but it seems to me that in many cases you really don't want a caching layer above the DB...