Can you please advise me on how to configure a cache with the following configuration: 1. The most commonly accessed members of the cache are stored in memory, less accessed members are stored on a disk 2. The size of memory allocated for cached objects is limited (preferably by specifying the amount of storage, but other methods will do). 3. When the program is about to stop, it is should be possible to flush all the objects that are currently in memory to the disk 4. It should be possible to query the cache for all the objects that have not been referenced for more than a certain time.