1. A method for caching data in a storage system, comprising: receiving a request for a first datum stored on a storage disk; retrieving the first datum from the storage disk when a copy of the first datum is not stored in a main memory and when a copy of the first datum is not stored on an asymmetric cache device (ACD); storing a first copy of the first datum in the main memory; updating a list of data to include the first datum, wherein each datum in the list of data is a datum for which a copy is stored in the main memory, wherein the list of data is sorted using a scheme such that a datum at a head of the list of data is most favored by the scheme and a datum at a tail of the list of data is least favored by the scheme; storing, prior to any data being evicted from the main memory, a second copy of the first datum on the ACD, wherein the first datum is one of a first plurality of data selected using a head-first search of the list of data; and evicting the first copy of the first datum from the main memory when a first copy of a second datum is designated for storing in the main memory and the main memory is full and the first datum is at the tail of the list of data.