tokuhirom's Blog

ナイーブなオンメモリキャッシュ実装をかいた

https://github.com/tokuhirom/Cache-Memory-Simple/blob/master/lib/Cache/Memory/Simple.pm

Expire されたデータがとれなくなるだけのナイーブなキャッシュ実装をかきました。
わりとみんな手でかいてるとおもうんですが、手でかくとバグりやすいしテストかくのも面倒なので CPAN にあげておくといういつものアレです。Expire がきいてシンプルではやそうなのがなかったんでまあ。

10秒ぐらいhttpdの中にオンメモリキャッシュしときたいなあ、という時などにどうぞ。

使い方は以下のようなかんじです。

    use Cache::Memory::Simple;
    use feature qw/state/;

    sub get_stuff {
        my ($class, $key) = @_;

        state $cache = Cache::Memory::Simple->new();
        $cache->get_or_set(
            $key, sub {
                Storage->get($key) # slow operation
            }, 10 # cache in 10 seconds
        );
    }