1. A method for managing cache memory in a flash cache architecture, the method comprising: providing a storage cache controller, an at least one flash memory comprising a flash controller, and an at least one backend storage device: wherein said storage cache controller is said flash controller and said flash controller implements both a cache management and a flash management; and maintaining, at said storage cache controller, a read cache metadata for tracking on said at least one flash memory a cached data to be read and a write cache metadata for tracking on said at least one flash memory data expected to be cached; receiving a read or write request, thereby using said flash memory as the cache; querying, upon receipt of said read request, said read cache metadata for retrieving an address of said data to be read by consecutively querying a main hash table, a shadow hash table, and said write cache metadata, which are each disposed on the at least one flash memory.