NAME

Util::Medley::Cache - Simple caching mechanism.

VERSION

version 0.002

SYNOPSIS

$self->set(namespace => 'unittest', 
           key       => 'test1', 
           data      => { foo => 'bar' });

my $data = $self->get(namespace => 'unittest', 
                      key       => 'test1');

my @keys = $self->getKeys(namespace => 'unittest');

$self->delete(namespace => 'unittest', 
              key       => 'test1');

DESCRIPTION

This class provides a thin wrapper around CHI. The caching has 2 levels:

  • level 1 (memory)

  • level 2 (disk)

When fetching from the cache, level 1 (L1) is always checked first. If the requested object is not found, it searches the level 2 (L2) cache.

The cached data can be an object, reference, or string.

All methods confess on error.

ATTRIBUTES

rootDir (optional)

Location of the L2 file cache.

default: $HOME/.util-medley/cache

enabled (optional)

Toggles caching on or off.

default: 1

expireSecs (optional)

Sets the cache expiration.

Default: 0 (never)

Env Var: MEDLEY_CACHE_DISABLED

namespace (optional)

Sets the cache namespace.

l1Enabled (optional)

Toggles the L1 cache on or off.

Default: 1

Env Var: MEDLEY_CACHE_L1_DISABLED

l2Enabled (optional)

Toggles the L2 cache on or off.

Default: 1

Env Var: MEDLEY_CACHE_L2_DISABLED

METHODS

clear

Clears all cache for a given namespace.

usage:

clear( [ namespace => $ns ] )

args:

  • namespace: The cache namespace.

delete

Deletes a cache object.

usage:

delete(
     key       => <string>,
   [ namespace => <string> ]
)
 

args:

  • key: Unique identifier of the cache object.

  • namespace: The cache namespace.

destroy

Deletes L1 cache and removes L2 from disk completely.

usage:

destroy( [namespace => $ns] )
 

args:

  • namespace: The cache namespace.

get

Gets a unique cache object. Returns undef if not found.

usage:

get(
     key       => $key,
   [ namespace => $ns ]
)

args:

  • key: Unique identifier of the cache object.

  • namespace: The cache namespace.

getNamespaceDir

Gets the L2 cache dir.

usage:

getNamespaceDir( [ namespace => $ns ] )

args:

  • namespace: The cache namespace.

set

Commits the data object to the cache.

usage:

set(
     key       => $key,
     data      => $data,
   [ namespace => $ns ],
)
  

args:

  • key: Unique identifier of the cache object.

  • data: An object, reference, or string.

  • namespace: The cache namespace.

getKeys

Returns a list of cache keys.

usage:

getKeys( [ namespace => $ns ] )

args:

  • namespace: The cache namespace.