We can reduce the number of network queries here by checking for 'c' and 't' in one shot, e.g., ```hmget```. If either is None, raise a KeyError as you do now.

Exceptional case: 2 network commands
Common case: 4 network commands

We can get it down to:

Exceptional case: 2 network commands (```Fail: hmget -> hmset```)
Common case: 2 network commands  (```Success: hmget -> hmset```)