MySQL query cache with time based expiration
I'll assume your database is all InnoDB when answering this question.

What you are asking for is not possible for the Query Cache. The mechanisms you have in mind do exist with the InnoDB Buffer Pool.

What you should try is the following:


Disable the Query Cache (Why query_cache_type is disabled by default start from MySQL 5.6?)
Make the InnoDB Buffer Pool Resistant to Scans


Increasing innodb_old_blocks_pct
Increasing innodb_old_blocks_time



This controls what and how long blocks of data and index are to stay inside the Buffer Pool

To release blocks after a while, you would change innodb_old_blocks_pct back to 37