The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
NAME
    Tie::Hash::MultiKeyCache - aged cache or fifo

SYNOPSIS
    This module is an extension of Tie::Hash::MultiKey and it iherits all of
    the methods and characteristics of the parent module. Only the methods
    unique to this module are shown here. See the Tie::Hash::MultiKey
    manpage for complete documentation.

      use Tie::Hash::MultiKeyCache;

      $thm = tie %h, 'Tie::Hash::MultiKeyCache',
                    SIZE    => n,
                    ADDKEY  => false,
                    DELKEY  => false;
      or

      $thm = tie %h, 'Tie::Hash::MultiKeyCache',
                    SIZE    => n,
                    FIFO    => true,

      $rv      = $thm->lock($key);
      $rv      = $thm->unlock($key);
      $size    = $thm->cacheSize();
      $oldsize = $thm->newSize();

DESCRIPTION
    This module provides a setable fixed size CACHE implemented as a hash
    with multiple keys per value. In normal use as new values are added to
    the CACHE and the CACHE size is exceeded, the least used items will drop
    from the CACHE. Particular items may be locked into the CACHE so they
    never expire.

    The CACHE may also be configured as a FIFO where the first items added
    to the CACHE are the first to drop out when size is exceeded. As in the
    recent use scenario, items LOCKED into CACHE will not be dropped.

    * $thm = tie %h, 'Tie::Hash::MultiKeyCache',
                                SIZE    => n,
                                ADDKEY  => false, # optional
                                DELKEY  => false; # optional
                                FIFO    => true;  # optional
                                  over rides ADD,DEL KEY

        The arguments beyond the package name may be specified as a hash as
        shown or as a reference to a hash.

          $thm = tie %h $package, { SIZE => n, options... }

        Creates a CACHE of maximum SIZE value elements and returns a method
        pointer. Default operation refreshes cache positioning for an
        element when a ADD Key or DELETE Key operation is performed. To
        disable this feature, provide ADDKEY and/or DELKEY with a false
        value.

          input:        hash,
                        cachesize
          returns:      method pointer

        The method pointer may also be accessed later with:

                $thm = tied(%h);

    * $rv = $thm->lock($key);
        Locks the value item into CACHE via any key in the value item's key
        set.

          input:        any key associated with value
          return:       true on success
                        false if the key does not exist

    * $rv = $thm->unlock($key);
        Unlocks the value item via any key in the value item's key set. No
        operation is performed if the value item is not locked in CACHE.

          input:        any key associated with value
          return:       true on success
                        false if the key does not exist

    * $size = $thm->cacheSize;
        Returns the set size of the CACHE. This may not be the same as the
        number of items in the CACHE. See: the Tie::Hash::MultiKey manpage
        $thm->size;

          input:        none
          returns:      set size of the CACHE

    * $oldsize = $thm->newSize($newsize);
        Sets the maximum size of the CACHE to a new size and returns the old
        size. A CACHE flush is performed if the new CACHE is smaller than
        the actual size of the current CACHE. However, items locked in CACHE
        will not be flushed if their number exceeds the new size parameter.

AUTHOR
        Michael Robinton, <miker@cpan.org>

COPYRIGHT
        Copyright 2014, Michael Robinton

        This program is free software; you may redistribute it and/or modify
        it under the same terms as Perl itself.

        This program is distributed in the hope that it will be useful, but
        WITHOUT ANY WARRANTY; without even the implied warranty of
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

SEE ALSO
        the Tie::Hash manpage, the Tie::Hash::MultiKey manpage