'Fetch the object from cache.
Objects may be flushed from cache at any time. Callers must always
handle the possibility of KeyError raised here.
Args:
key: The key used to access the object.
Returns:
Cached object.
Raises:
KeyError: If the object is not present in the cache.'

@Synchronized
def Get(self, key):

    if (key not in self._hash):
        raise KeyError(key)
    node = self._hash[key]
    self._age.Unlink(node)
    self._age.AppendNode(node)
    return node.data
