Key-value stores and in-memory object caches