Isn't it cleaner to implement a 'TrackedDownloadService'/'TrackedDownloadQueueService' with the Cache implemented internally?
That way you can transparently switch to a database later if you want.
It also helps with the Sab API-based Import logic JustinN and I were thinking about.