If you're caching publicly viewable pages which change infrequently, you should probably be using either page caching (if you have one or a small number of app servers) or a caching proxy like e.g. Varnish.
If you're caching intermediate calculations which are very volatile, Memached is a great choice.
If you're caching intermediate calculations which should be persisted for arbitrarily long periods of time, Redis is a great choice.
I personally use a combination of memcached and Redis for most of my Rails projects. Rails.cache is the memcached instance but I keep a ModelObject.cache instance around which encapsulates a Redis instance but conforms to the general CacheStore contract with regards to read, write, and fetch semantics.