# perldoc > HTML::Mason::Cache::BaseCache

## NAME
    [HTML::Mason::Cache::BaseCache](https://www.chedong.com/phpMan.php/perldoc/HTML%3A%3AMason%3A%3ACache%3A%3ABaseCache/markdown) - Base cache object

## DESCRIPTION
    This is the base module for all cache implementations used in Mason. It provides a few
    additional methods on top of "[Cache::BaseCache](https://www.chedong.com/phpMan.php/perldoc/Cache%3A%3ABaseCache/markdown)" in Dewitt Clinton's "[Cache::Cache](https://www.chedong.com/phpMan.php/perldoc/Cache%3A%3ACache/markdown)" package.

    An object of this class is returned from $m->cache.

## METHODS
    clear ()
        Remove all values in the cache.

    get (key, [%params])
        Returns the value associated with *key* or undef if it is non-existent or expired. This is
        extended with the following optional name/value parameters:

        busy_lock => duration
            If the value has expired, set its expiration time to the current time plus *duration*
            (instead of removing it from the cache) before returning undef. This is used to prevent
            multiple processes from recomputing the same expensive value simultaneously. The
            *duration* may be of any form acceptable to set.

        expire_if => sub
            If the value exists and has not expired, call *sub* with the cache object as a single
            parameter. If *sub* returns a true value, expire the value.

    get_object (key)
        Returns the underlying "[Cache::Object](https://www.chedong.com/phpMan.php/perldoc/Cache%3A%3AObject/markdown)" object associated with *key*. The most useful methods
        on this object are

            $co->get_created_at();    # when was object stored in cache
            $co->get_accessed_at();   # when was object last accessed
            $co->get_expires_at();    # when does object expire

    expire (key)
        Expires the value associated with *key*, if it exists. Differs from remove only in that the
        cache object is left around, e.g. for retrieval by get_object.

    remove (key)
        Removes the cache object associated with *key*, if it exists.

    set (key, data, [duration])
        Associates *data* with *key* in the cache. *duration* indicates the time until the value
        should be erased. If *duration* is unspecified, the value will never expire by time.

        *$expires_in* may be a simple number of seconds, or a string of the form "[number] [unit]",
        e.g., "10 minutes". The valid units are s, second, seconds, sec, m, minute, minutes, min, h,
        hour, hours, d, day, days, w, week, weeks, M, month, months, y, year, and years.

