Abstract a CacheProvider interface to allow custom cache providers