The current behavior seems to be replacing the value of the key, but increases total_bytes without retiring the existing item.
I do not think this behavior is well defined. It causes total_bytes and available_bytes to diverge, and eventually triggers #15.
How unique do we expect the keys to be?
Shall we raise an exception if the key same key is used twice, or shall we consistently retire the existing key/value when the same key is reused?