NAME

Tie::CHI - Tied hash to persistent CHI cache

VERSION

version 0.02

SYNOPSIS

use Tie::CHI;

my %cache;

# Pass CHI options to tie
#
tie %cache, 'Tie::CHI', { driver => 'File', root_dir => '/path/to/root' };
tie %cache, 'Tie::CHI',
  {
    driver             => 'Memcached::libmemcached',
    namespace          => 'homepage',
    servers            => [ "10.0.0.15:11211", "10.0.0.15:11212" ],
    default_expires_in => '10 min'
  } );

# or pass an existing CHI object
#
my $chi_object = CHI->new(...);
tie %cache, 'Tie::CHI', $chi_object;

# Perform cache operations
#
my $customer = $cache{$name};
if ( !defined $customer ) {
      $customer = get_customer_from_db($name);
      $cache{$name} = $customer;
}
delete( $cache{$name} );

# Break the binding
#
untie(%cache);

DESCRIPTION

Tie::CHI implements a tied hash connected to a CHI cache. It can be used with any of CHI's backends (File, Memcached, DBI, etc.)

Usage is one of the following:

tie %cache, 'Tie::CHI', $hash_of_chi_options;
tie %cache, 'Tie::CHI', $existing_chi_cache;

A read/write/delete on the tied hash will result in a get/set/remove on the underlying cache. keys and each will be supported if the underlying CHI driver supports get_keys.

There is no way to specify expiration for an individual set, but you can pass expires_in, expires_at and/or expires_variance to the tie to specify default expiration. e.g.

tie %cache, 'Tie::CHI', { 
    namespace => 'products',
    driver => 'DBI',
    dbh => DBIx::Connector->new(...),
    expires_in => '4 hours',
    expires_variance => '0.2'
};

SUPPORT AND DOCUMENTATION

Questions and feedback are welcome, and should be directed to the perl-cache mailing list:

http://groups.google.com/group/perl-cache-discuss

Bugs and feature requests will be tracked at RT:

http://rt.cpan.org/NoAuth/Bugs.html?Dist=Tie-CHI
bug-tie-chi@rt.cpan.org

The latest source code can be browsed and fetched at:

http://github.com/jonswar/perl-tie-chi/tree/master
git clone git://github.com/jonswar/perl-tie-chi.git

SEE ALSO

CHI

AUTHOR

Jonathan Swartz <swartz@pobox.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2011 by Jonathan Swartz.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.