Flash-based SSDs are widely used as storage caches, which can benefit from both the higher performance of SSDs and lower price of disks. Unfortunately, issues of reliability and lifetime limit the use of flash-based cache. One way to solve this problem is to use the flash memory as read cache and use other devices like nonvolatile memory for write buffering. In this paper, we propose a new flash-aware read cache design, which leverages out-of-place update property of SSDs to improve both cache hit ratio and lifetime. Due to the out-of-place update property, when a cache entry is evicted from the flash cache, the eviction only removes the metadata, while the real data is still accessible and resides in the physical flash page until the whole flash block being erased. The main idea of our flash-aware cache is to reuse these evicted but still available data, when a request for the previously evicted data page arrives, instead of accessing underlying storage to fetch the data and rewriting it into fash cache, our design just needs to revive the evicted data. To evaluate the benefits of flash-aware cache design, we implemented the normal LRU, normal ARC, flash-aware LRU (FLRU), and flashaware ARC (FARC) cache algorithms on the Disksim simulator with SSD extension. Our simulation results demonstrate that our flashaware cache can improve the cache hit ratio by up to 28 percent, reduce the average response time by up to 40 percent with higher performance stability, and alleviate the lifetime limitation of flash cache by reducing the erase count by up to more than 70 percent. Besides of the flash-aware design, we also propose a new zero-migration garbage collection scheme to further extend the lifetime of flash cache. Our experiments show that the combination of our flash-aware cache design and the zero-migration garbage collection scheme reduces the erase count by up to nearly 90 percent.