This class will serve as a local buffer to the real cache: anything read from & written to the real cache will be stored in memory, so if any of those keys is again requested in the same request, we can just grab it from memory instead of having to get it over the wire.
In addition to buffering cache data in memory (see BufferedStore), this class will add transactional capabilities. Writes can be deferred by starting a transaction & all of them will only go out when you commit them. This makes it possible to defer cache updates until we can guarantee it's safe (e.g. until we successfully committed everything to persistent storage).