There are functions in Drupal which will cause "expired" entries in some cache tables to be deleted. "Minimum_cache_lifetime" is a partial solution, but still not totally complete.
There are still times and/or cache tables that don't get cleared in any of those scenarios. Many sites will not be impacted by this, but a few will.
In some cases, if the cache entries get too large, the value of the "max_allowed_packet" MySQL parameter will be exceeded. If this happens, MySQL does not throw an error. It just provides what data it could read up to that limit, causing all sorts of problems.
Unpack in your modules folder (usually '/sites/all/modules/')
Enable under Administer > Site Building > Modules.