Not sure about what's been published, but from what I recall, for data stored in memcache it was manual: people would need to know the right keys to invalidate when doing DB mutations (naturally there were functions encoding this, so multiple queries updating, say, a user could all just call a single function which returned the cache keys for that user).