Skip to content

Songmu/p5-Cache-Scalar-WithExpiry

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NAME

Cache::Scalar::WithExpiry - Cache one scalar value with expiry

SYNOPSIS

use Cache::Scalar::WithExpiry;
use feature qw/state/;


state $cache = Cache::Scalar::WithExpiry->new();
my ($value, $expiry_epoch) = $cache->get_or_set(sub {
    my $val          = Storage->get;
    my $expiry_epoch = time + 20;
    return ($val, $expiry_epoch); # cache in 20 seconds
});

DSL interface

use Cache::Scalar::WithExpiry;


my ($value, $expiry_epoch) = cache_with_expiry {
    my $val          = Storage->get;
    my $expiry_epoch = time + 20;
    return ($val, $expiry_epoch); # cache in 20 seconds
};

DESCRIPTION

Cache::Scalar::WithExpiry is cache storage for one scalar value with expiry epoch.

METHODS

  • my $obj = Cache::Scalar::WithExpiry->new()

    Create a new instance.

  • my $stuff, [$expiry_epoch:Num] = $obj->get();

    Get a stuff from cache storage. It returns value in scalar context, and returns value and expiry epoch in array context.

  • $obj->set($val, $expiry_epoch)

    Set a stuff for cache. $expiry_epoch is required.

  • $obj->get_or_set($code)

    Get a cache value if it's already cached. If it's not cached, run $code which should return two value, $value_to_be_cached and $expiry_epoch, and cache the value until the expiry epoch.

  • $obj->delete($key)

    Delete the cache.

EXPORT FUNCTION

  • my $stuff, [$expiry_epoch:Num] = cache_with_expiry {BLOCK};

    [EXPERIMENTAL] It is equivalent process with doing new and set_or_get at a time.

THANKS TO

tokuhirom. Most code of this module is steal from his Cache::Memory::Simple::Scalar.

LICENSE

Copyright (C) Songmu.

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

AUTHOR

Songmu y.songmu@gmail.com

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages