2015/10/29

WAFでルーティングだけ速いみたいなオンメモリキャッシュ書いた

Perl でオンメモリキャッシュを使う場合、Cache::Memory::Simple を利用することが多いと思いますが、キャッシュキーはおぅおぅにして ID(Integer) ですよねということで、Cache::Memory::Simple::ID というのを書いてみました。

use Cache::memory::Simple::ID;

my $stamp_id = 123;

my $cache = Cache::memory::Simple::ID->new;
$cache->set($stamp_id => 'smile');
say $cache->get($stamp_id);

お得なところは、

  • array 参照なのでちょっと速い(たぶん)
  • キーがInteger限定なのでその分省メモリ(たぶん)

とはいえ、上記2点のメリットは WAF におけるルーティングの速度向上みたいなもので、全体的にはたいした割合ではないことが多い。

このモジュールを書いたもちっと深い理由は、オンメモリキャッシュにもかかわらず、リソースが無限かのようにキーを長くしてしまう人がいて、なんかそういうのを説明するのめんどいからそもそも ID しか入れられないようにしてしまえ、という感じです。64bit当然の時代になに言ってんだこの老害めと我ながら思わないでもないけど、まあオンメモリキャッシュって、カリカリけちけちやるとこだと思った次第。

【追記】

こういうのやると死ぬ。

my $cache = Cache::Memory::Simple::ID->new;
$cache->set(2147483647 => 1);

サイト内検索