We need to assume that IMemento is an immutable object, this allows for simple Cache usage.
An ICache interface will be introduced and used from Repository. When a Save is ok the Repository can save the IMemento of the aggregate into cache to be reused.
This will allow for simple Decorator pattern that can save cache on durable medium (MongoDB, Redis, Raven) and remove needs Stream Snapshot.