Is it normal that I have to FLUSH QUERY CACHE once every 6 hours to maintain fast queries?
Flushing the query cache would be OK depending on Storage Engine

InnoDB spends time micromanaging data changes. This includes crosschecking the query cache.

I have a 2-year-old post (Sep 05, 2012 : Is the overhead of frequent query cache invalidation ever worth it?) where I recommend running FLUSH QUERY CACHE via the crontab.

I also have more recent posts


Jun 07, 2014 : Why query_cache_type is disabled by default start from MySQL 5.6?
Jun 30, 2014 : Optimize MySQL query_cache_min_res_unit


explaining how one could try to set query_cache_size and query_cache_min_res_unit if one truly knows the data, the average size of a result set, and how many entries should be in the query cache.

Other than having this foreknowledge about the data, fragmentation is unavoidable.

On the flipside, if all your data is MyISAM, you should take the time to set set query_cache_size and query_cache_min_res_unit by getting to know your data. After all, MyISAM does not cache data. It only caches indexes.

EPILOGUE

Regardless of Storage Engine, running FLUSH QUERY CACHE; bypasses the need to set query_cache_size and query_cache_min_res_unit. It quickly eliminates fragmentation issues. If your dataset is not very large, make the time to size your data and result sets. You could eliminate the crontab.

What would be an even greater advantage would be the following


tune the queries 
add proper indexes to support queries 
tune MyISAM


If the MyISAM tables have VARCHAR columns, change row format to FIXED.
Make sure the key_buffer_size can accommodate all MyISAM indexes (See What are the main differences between InnoDB and MyISAM?)