1. A method of operating a distributed storage system comprising the steps of: reading m data blocks from a distributed cache, the distributed cache comprising m replicated caches, each replicated cache comprising a plurality of independent computing devices, each independent computing device of the replicated caches holding a replica of a particular one of the m data blocks in memory; and storing erasure-coded data, including the m data blocks and p parity blocks across m plus p independent computing devices, the p parity blocks being computed from the m data blocks obtained during said step of reading and each of the m plus p independent computing devices storing a single block selected from the m data blocks and the p parity blocks, wherein each replicated cache comprises p plus one of the independent computing devices.