If you have many SELECT
s and few writes to the database then MySQL's query cache should do a pretty good job at caching the data for you.
To see how effectively the query cache is working try the following:
> SHOW GLOBAL STATUS LIKE 'Qcache_hits';
+---------------+--------+
| Variable_name | Value |
+---------------+--------+
| Qcache_hits | 735740 |
+---------------+--------+
1 row in set (0.00 sec)
> SHOW GLOBAL STATUS LIKE 'Com_select';
+---------------+---------+
| Variable_name | Value |
+---------------+---------+
| Com_select | 5644038 |
+---------------+---------+
1 row in set (0.00 sec)
To find the hit ratio calculate Qcache_hits / (Qcache_hits + Com_select)
In this case it's 735740 / (735740 + 5644038) = 0.1153
That's a 11% hit rate and is pretty poor.
If you see a much higher % on your machine then there might be less of a case for using memcached.
MySQL's query cache works well in many cases (I suspect this includes yours). The cache entries are invalidated every time a table is updated (even if your cached query relates to a row that's not been changed) and this is one big shortcoming of it. There are cases where you can use memcached to cache items at closer to a row level when you and your application can be smarter about cache expiry than MySQL query cache.
Let me know the result of the query cache hit rate. You might even find that you've got the query cache disabled at the moment(!)
You can verify whether it's enabled by running the following query:
> SHOW GLOBAL VARIABLES LIKE '%cache';
Check for have_query_cache = YES
and query_cache_size > 0
in there.