Tripletail

 view release on metacpan or  search on metacpan

lib/Tripletail/MemCached.pm  view on Meta::CPAN

# -----------------------------------------------------------------------------
# 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 => undef);
	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";



( run in 0.542 second using v1.01-cache-2.11-cpan-5b529ec07f3 )