# HTML::Mason::Cache::BaseCache - phpMan

## NAME
    [HTML::Mason::Cache::BaseCache] - 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]" in Dewitt
    Clinton's "[Cache::Cache]" 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]" 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.

