Kangaroo: Theory and Practice of Caching Billions of Tiny Objects on Flash