memcached works great. I've used it to cache member data on a community site to reduce db accesses. Read from db when data is not present in memcache, otherwise read from memcache. Invalidate data on db update. These updates will only ever be initiated by one single user: the member itself. So the solution is simple and efficient.
However, updating a hit counter is slightly more complicated since several threads will try to update the same value: your code will be vulnerable to race conditions. memcached provides atomic increment which returns the new value, false if key didn't exist. add operation does nothing and returns false if a key exists which means you can solve this issue with, try increment, try add if prev operation failed, try increment if prev operation failed
1. $val = $mem->increment(...)
2. if ($val === false), $val = $mem->add(...)
3. if ($val === false), $val = $mem->increment(...)
However, when not dealing with simple increment type operations, you will have to create a locking mechanism yourself. So if you don't need the speed, use a database. Not only does it easily handle multiple update / read operations, but data is also durable. It may not matter if you lose 10 minutes worth of hit counter statistics if your memcached server dies, but registration, orders, payments etc can't be handled so sloppily, and a DBMS gives you ACID compliance (or it should).
As such, while memcached can be great, I agree with brad: why not use a database?