| Tripletail documentation | Contained in the Tripletail distribution. |
Tripletail::MemCached - キャッシュを扱う
#キャッシュにセット $TL->newMemCached->set($key,$data); #キャッシュから取得 my $cachedata = $TL->newMemCached->get($key); #キャッシュから削除 $TL->newMemCached->delete($key);
memcachedを利用するためのクラスです。 Cache::Memcached::XSを使用しています。 Cache::Memcached::XSが利用不可能な場合、Cache::Memcachedを利用しようとします。(デフォルト設定の場合)
$memc = $TL->newMemCached;
Tripletail::MemCached オブジェクトを作成。
$memc->set($key, $data) $memc->set($key, $data, $expires)
$keyをキーとして、$dataをメモリキャッシュに書き込む。 $expiresがキャッシュの保持期限となる。
$expires が省略された場合は 60*60*24*30が使われる。
キャッシュに成功した場合1が、失敗した場合0が返る。
$cachedata = $memc->set($key)
指定したキーにセットされているキャッシュを読み込む キャッシュが無かった場合、undefが返る。
$memc->delete($key)
指定したキーにセットされているキャッシュを削除する。
$memc->disconnect_all
コネクションを解放する。forkした場合に利用する。 親プロセスでコネクションすると、子プロセスでもそのキャッシュされたソケットを利用しようとするため。
$memc->flush_all
存在する全てのキャッシュを削除する。
グループ名は "MemCached" でなければならない。
例:
[MemCached] servers = localhost:11211 compress_threshold = 10000
servers = localhost:11211 10.0.0.17:11211,3
接続するMemCachedサーバを指定する。省略可能。 スペース区切りで複数指定可能。,で重み付け可能。指定しない場合の重みは1。
デフォルトは "localhost:11211" 。
compress_threshold = 10000
指定された以上のbytesのデータの場合圧縮する。
デフォルトは "10000"。
xs = 1
0の場合、Cache::Memcachedを利用する。 1の場合、Cache::Memcached::XSを利用する。但し、Cache::Memcached::XSが利用不可能だった場合は、Cache::Memcachedの利用を試みる。
デフォルトは "1"。
Copyright 2006 YMIRLINK Inc.
This framework is free software; you can redistribute it and/or modify it under the same terms as Perl itself
このフレームワークはフリーソフトウェアです。あなたは Perl と同じライセンスの 元で再配布及び変更を行うことが出来ます。
Address bug reports and comments to: tl@tripletail.jp
HP : http://tripletail.jp/
| Tripletail documentation | Contained in the Tripletail distribution. |
# ----------------------------------------------------------------------------- # Tripletail::MemCached - ãã£ãã·ã¥ãæ±ã # ----------------------------------------------------------------------------- package Tripletail::MemCached; use Tripletail; use strict; use warnings; 1; sub _new { my $class = shift; my $this = bless {} => $class; my @servers; $this->{servers} = $TL->INI->get('MemCached' => 'servers'); if(!defined($this->{servers})) { push(@servers,'localhost:11211'); } else { foreach my $tmp (split(/\s+/, $this->{servers})) { push(@servers,split(/\s?,\s?/, $tmp)); } } $this->{servers} = \@servers; $this->{compress_threshold} = $TL->INI->get('MemCached' => 'compress_threshold', '10000'); my $xs = $TL->INI->get('MemCached' => 'xs', '1'); if($xs == 1) { do { local $SIG{__DIE__} = 'DEFAULT'; eval 'use Cache::Memcached::XS'; }; if($@) { do { local $SIG{__DIE__} = 'DEFAULT'; eval 'use Cache::Memcached'; }; if($@) { die "TL#newMemCached: failed to load Cache::Memcached [$@] (Cache::Memcachedã使ç¨ã§ãã¾ãã)\n"; } } } else { do { local $SIG{__DIE__} = 'DEFAULT'; eval 'use Cache::Memcached'; }; if($@) { die "TL#newMemCached: failed to load Cache::Memcached [$@] (Cache::Memcachedã使ç¨ã§ãã¾ãã)\n"; } } $this->{memd} = Cache::Memcached->new({ 'servers' => $this->{servers}, 'debug' => 0, 'compress_threshold' => $this->{compress_threshold}, }); $this; } sub set { my $this = shift; my $key = shift; my $value = shift; my $expires = shift; if(!defined($key)) { die __PACKAGE__."#set: arg[1] is not defined. (第1弿°ãæå®ããã¦ãã¾ãã)\n"; } elsif(ref($key)) { die __PACKAGE__."#set: arg[1] is a reference. (第1弿°ããªãã¡ã¬ã³ã¹ã§ã)\n"; } elsif($key =~ /\s/) { die __PACKAGE__."#set: arg[1] has a space. (第1弿°ãã¹ãã¼ã¹ãå«ãã§ãã¾ã)\n"; } if(!defined($value)) { die __PACKAGE__."#set: arg[2] is not defined. (第2弿°ãæå®ããã¦ãã¾ãã)\n"; } my $data = $this->{memd}->set($key, $value, $expires); } sub get { my $this = shift; my $key = shift; if(!defined($key)) { die __PACKAGE__."#get: arg[1] is not defined. (第1弿°ãæå®ããã¦ãã¾ãã)\n"; } elsif(ref($key)) { die __PACKAGE__."#get: arg[1] is a reference. (第1弿°ããªãã¡ã¬ã³ã¹ã§ã)\n"; } elsif($key =~ /\s/) { die __PACKAGE__."#get: arg[1] has a space. (第1弿°ãã¹ãã¼ã¹ãå«ãã§ãã¾ã)\n"; } $this->{memd}->get($key); } sub delete { my $this = shift; my $key = shift; if(!defined($key)) { die __PACKAGE__."#delete: arg[1] is not defined. (第1弿°ãæå®ããã¦ãã¾ãã)\n"; } elsif(ref($key)) { die __PACKAGE__."#delete: arg[1] is a reference. (第1弿°ããªãã¡ã¬ã³ã¹ã§ã)\n"; } elsif($key =~ /\s/) { die __PACKAGE__."#delete: arg[1] has a space. (第1弿°ãã¹ãã¼ã¹ãå«ãã§ãã¾ã)\n"; } $this->{memd}->delete($key); } sub disconnect_all { my $this = shift; $this->{memd}->disconnect_all; } sub flush_all { my $this = shift; $this->{memd}->flush_all; } __END__