A key value, KV, store, comprising: a key logger; and a processor configured to: receive a first command for storing a first KV in the KV store, write a first value of the first KV to a first memory page, generate an extent map for identifying the first memory page including the first value, write the extent map to a second memory page, append an entry for storing the first KV to the key logger, and update a device hashmap of the KV store to include a first key of the first KV, upon a threshold being met within the key logger, wherein the first key of the first KV is stored on a third memory page with at least one other key and includes an extent pointer that points to the second memory page including the extent map, and wherein the processor is further configured to update the device hashmap by: collating key entries belonging to a group of adjacent buckets in the device hashmap; merging existing keys in the device hashmap with entries from the key logger, to form packed keys for the group of adjacent buckets; writing the packed keys to the third memory page; and updating the device hashmap to point to the third memory page including the packed keys. a key logger; and a processor configured to: receive a first command for storing a first KV in the KV store, write a first value of the first KV to a first memory page, generate an extent map for identifying the first memory page including the first value, write the extent map to a second memory page, append an entry for storing the first KV to the key logger, and update a device hashmap of the KV store to include a first key of the first KV, upon a threshold being met within the key logger, wherein the first key of the first KV is stored on a third memory page with at least one other key and includes an extent pointer that points to the second memory page including the extent map, and wherein the processor is further configured to update the device hashmap by: collating key entries belonging to a group of adjacent buckets in the device hashmap; merging existing keys in the device hashmap with entries from the key logger, to form packed keys for the group of adjacent buckets; writing the packed keys to the third memory page; and updating the device hashmap to point to the third memory page including the packed keys. receive a first command for storing a first KV in the KV store, write a first value of the first KV to a first memory page, generate an extent map for identifying the first memory page including the first value, write the extent map to a second memory page, append an entry for storing the first KV to the key logger, and update a device hashmap of the KV store to include a first key of the first KV, upon a threshold being met within the key logger, wherein the first key of the first KV is stored on a third memory page with at least one other key and includes an extent pointer that points to the second memory page including the extent map, and wherein the processor is further configured to update the device hashmap by: collating key entries belonging to a group of adjacent buckets in the device hashmap; merging existing keys in the device hashmap with entries from the key logger, to form packed keys for the group of adjacent buckets; writing the packed keys to the third memory page; and updating the device hashmap to point to the third memory page including the packed keys. collating key entries belonging to a group of adjacent buckets in the device hashmap; merging existing keys in the device hashmap with entries from the key logger, to form packed keys for the group of adjacent buckets; writing the packed keys to the third memory page; and updating the device hashmap to point to the third memory page including the packed keys.