fileCache seems to expire even though I have it set to 0
You should be using craft()-&gt;cache with the cacheMethod config setting set to file (which it is by default) instead of craft()-&gt;fileCache.  The latter is deprecated and won't work in Craft 3.

Yii does have garbage collection on cache, and by default an item has a 0.01% change of being purged from cache regardless of expiry time.

If you think you're not being garbage collected, you can check the file modified time of the files in craft/storage/runtime/cache.  If you explicitly pass in 0 as an expiration time, Yii will set the file's modification date to a year out.