On version 8.12.0 all of commerce should be using ISynchronizedObjectInstanceCache. You should then be able to create a redis implementation of ISynchronizedObjectInstanceCache that will just read and write to the distributed cache. Then just configure in init module to use your redis implementation.
That sounds great Mark, really looking forward to that :)
Will download and take a look asap, thanks Mark.
Unfortunately the whole distributed cache thing fell flat on its back because a lot of the objects that EPiServer caches have circular references and therefor cannot be serialized/deserialized in a meaningfull way. Also it seems as if some of the cms objects are marked as serializable but some are not, and with commerce the situation is much worse (MetaClass for example from meta data plus).
This would mean that only some of the objects used by EPiServer can be cached, and the amount of code and cpu cycles needed to figure out if an object could be cached in a distributed cache would be non-trivial.
So until an immutable value object cache is in place for cms/commerce i don't think this is doable in a non-hackish way, all objects cached needs to be able to be serialized/deserialized so it can be transfered to/from a distributed cache.
I realise this is an old thread but did you overcome this problem?
We need a pluggable cache for EPiServer. This would allow us to use custom distributed caches like for instance Redis or similar which would make load balanced environments a breeze to use. In the last 8+ years i have not done a single server EPiServer site because of high availablity demands and it is sometimes a pain to setup the event system to make episerver work across multiple servers.
This cache needs to be the same implementation across the entire platform, cms and commerce, instead of each subsystem using a custom cache implementation. As it is right now, especially commerce, uses different caching mechanisms for different subsystems, like business foundation uses one cache (which basically doesn't work in a load balanced environment because it doesn't cache invalidate across multiple servers), meta data plus uses another system and the catalog system uses a third implementation and the list goes one.
Also don't use AppFabric cache or whatever they call it now if you are going to provide example implementations as it is deprecated and Microsoft recommends everyone to use Redis anyway :)