Hans Oesterholt

NAME

Tie::Cache::LRU::Expires - Extends Tie::Cache::LRU with expiring

SYNOPSIS

        use Tie::Cache::LRU::Expires;

        tie %cache, 'Tie::Cache::LRU::Expires', EXPIRES => 10, ENTRIES => 1000;
        $cache_obj = tied %cache;

        for(1..1000) {
           $cache{$_}="test $_";
        }
        sleep 4;
        for(1000..1500) {
           $cache{$_}="test $_";
        }

        print $cache_obj->lru_size(),"\n";              # access to the
                                                        # number of entries
                                                        # used in the LRU
                                                        # cache.

        sleep 4;
        for(1..10) { print $cache{$_},"\n"; }
        for(1100..1110) { print $cache{$_},"\n"; }
        sleep 4;
        for(1..10) { print $cache{$_},"\n"; }           # expired (undefs).
        for(1100..1110) { print $cache{$_},"\n"; }
        sleep 4;
        for(1100..1110) { print $cache{$_},"\n"; }      # now also expired.

        # Clearing the cache

        %cache=();

DESCRIPTION

This is an expiring LRU cache, using Tie::Cache::LRU. Each entry in this cache expires after 'EXPIRES' seconds (default 3600). The cache is in RAM (see Tie::Cache::LRU). ENTRIES provides the maximum number of entries in the Tie::Cache::LRU cache.

It works by checking if a cached entry hasn't expired. If it has, undef is returned, otherwise it's value. If the entry wasn't cached, undef is also returned (of course). Expired entries will eventually drop of the LRU; or, if referenced will (as can be expected, otherwise they wouldn't be referenced) be refreshed.

NB! If entries keep being referenced and are expired, but never refreshed, they will never leave the LRU!

SEE ALSO

Tie::Cache::LRU.

USAGE

See SYNOPSIS. Too simple to explain.

AUTHOR

Hans Oesterholt-Dijkema <oesterhol@cpan.org>

LICENSE

Artistic