Extracting Reusable Primitives of Key-Value Operations and Efficient Architecture Support