'Fetch an entry out of the cache
Args:
key
dict_key(list): If given a set of keys then return only those keys
that exist in the cache.
Returns:
DictionaryEntry'

def get(self, key, dict_keys=None):

    entry = self.cache.get(key, self.sentinel)
    if (entry is not self.sentinel):
        self.metrics.inc_hits()
        if (dict_keys is None):
            return DictionaryEntry(entry.full, entry.known_absent, dict(entry.value))
        else:
            return DictionaryEntry(entry.full, entry.known_absent, {k: entry.value[k] for k in dict_keys if (k in entry.value)})
    self.metrics.inc_misses()
    return DictionaryEntry(False, set(), {})
