ROUTE 3390

備忘録的な用途で書いていますが、どなたかの役に立つ事があれば嬉しいです。

Cache::FastMmapを使ってみた

[CPAN] http://search.cpan.org/~robm/Cache-FastMmap-1.36/FastMmap.pm

データを管理する時にファイルだったり、データベースなんかを使いますよね。

Cache::FastMmapは1つのKeyに対して簡単なValueを持つデータを容易に扱う事が出来ます。
中でも私が素敵だと思ったのは、一定時間を経過すると自動で削除してくれるような機能が備わっている点です。

こんな感じで

my $cache = Cache::FastMmap->new(
    share_file  => $PATH,
    expire_time => '30d',
    );
my $buff = $cache->get($key);

$cache->set($key, $buff);

share_fileで指定したパスを他のプログラムから呼んであげれば、データを共有する事も出来ます。

expire_timeは指定しなければデフォルト0(制限時間無し)となるので、データは消えません。
'30d'というのは30日間という意味です。
他にもm(分)やh(時)、w(週)があります。

ソースを見ると。。

sub parse_expire_time {
  my $expire_time = shift || '';
  return 1 if $expire_time eq 'now';
  return 0 if $expire_time eq 'never';
  my %Times = ('' => 1, s => 1, m => 60, h => 60*60, d => 24*60*60, w => 7*24*60*60);
  return $expire_time =~ /^(\d+)\s*([mhdws]?)/i ? $1 * $Times{$2} : 0;
}

全部秒数に直されてるんですね。ふーん

時間という制限の他にも、cache_sizeというオプションで指定サイズを超える場合に古いデータから消えるというのもあるそうです。

他にもオプションがたくさんあるようですが、僕はまだ使った事ないので、使ったら追記します。