'Args:
cache_name (str): Name of this cache, used for logging.
clock (Clock)
max_len (int): Max size of dict. If the dict grows larger than this
then the oldest items get automatically evicted. Default is 0,
which indicates there is no max limit.
expiry_ms (int): How long before an item is evicted from the cache
in milliseconds. Default is 0, indicating items never get
evicted based on time.
reset_expiry_on_get (bool): If true, will reset the expiry time for
an item on access. Defaults to False.
iterable (bool): If true, the size is calculated by summing the
sizes of all entries, rather than the number of entries.'

def __init__(self, cache_name, clock, max_len=0, expiry_ms=0, reset_expiry_on_get=False, iterable=False):

    self._cache_name = cache_name
    self._clock = clock
    self._max_len = max_len
    self._expiry_ms = expiry_ms
    self._reset_expiry_on_get = reset_expiry_on_get
    self._cache = OrderedDict()
    self.metrics = register_cache(cache_name, self)
    self.iterable = iterable
    self._size_estimate = 0
