Changeset 12501

Show
Ignore:
Timestamp:
05/27/08 08:05:37 (5 years ago)
Author:
daisuke
Message:

* now support arrayref keys for all get/set operations
* slight modifications for stats

Location:
lang/perl/Cache-Memcached-libmemcached/trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/Cache-Memcached-libmemcached/trunk/lib/Cache/Memcached/libmemcached.pm

    r11306 r12501  
    3939            sub $method {  
    4040                my \$self = shift; 
    41                 \$self->memcached_$method(\$self->{namespace} . \$_[0], \$_[1], int(\$_[2] || 0)) 
     41                my (\$master_key, \$key) = \$self->__to_keys(shift); 
     42                if (\$master_key) { 
     43                    \$self->SUPER::memcached_${method}_by_key(\$master_key, \$key, \@_); 
     44                } else { 
     45                    \$self->SUPER::memcached_${method}(\$key, \@_); 
     46                } 
    4247            } 
    4348        EOSUB 
     
    108113} 
    109114 
    110 sub get 
     115sub __to_keys 
    111116{ 
    112117    my $self = shift; 
    113118    my $key  = shift; 
    114     $self->SUPER::get($self->{namespace} . $key, @_); 
     119 
     120    my $master_key; 
     121    if (ref $key eq 'ARRAY') { 
     122        ($master_key, $key) = @$key; 
     123    } 
     124 
     125    if ($self->{namespace}) { 
     126        $key .= "$self->{namespace}$key"; 
     127    } 
     128    return ($master_key, $key); 
     129} 
     130 
     131sub get 
     132{ 
     133    my $self = shift; 
     134    my ($master_key, $key) = $self->__to_keys(shift); 
     135    $self->SUPER::get($master_key ? [$master_key, $key] : $key, @_); 
    115136} 
    116137 
     
    210231        $h{hosts}{$hostport}{$type}{$key} = $value; 
    211232        if ($type eq 'misc') { 
    212             $h{total}{$key} += $value if $misc_keys{$key}; 
     233            if ($misc_keys{$key}) { 
     234                $h{total}{$key} ||= 0; 
     235                $h{total}{$key} += $value; 
     236            } 
    213237        } elsif ($type eq 'malloc') { 
     238            $h{total}{"malloc_$key"} ||= 0; 
    214239            $h{total}{"malloc_$key"} += $value; 
    215240        } 
     
    340365=over 4 
    341366 
    342 =item cas() and stats() are not implemented 
    343  
    344 They were sort of implemented in a previous life, but since  
    345 Memcached::libmemcached is still undecided how to handle these, we don't 
     367=item cas() is not implemented 
     368 
     369This was sort of implemented in a previous life, but since  
     370Memcached::libmemcached is still undecided how to handle it, we don't 
    346371support it either. 
    347372 
  • lang/perl/Cache-Memcached-libmemcached/trunk/t/02_basic.t

    r8526 r12501  
    77        plan(skip_all => "Define MEMCACHED_SERVER (e.g. localhost:11211) to run this test"); 
    88    } else { 
    9         plan(tests => 21); 
     9        plan(tests => 22); 
    1010    } 
    1111    use_ok("Cache::Memcached::libmemcached"); 
     
    7979    ok(!$cache->get_compress_enable, "check explicit compress_enable => 0"); 
    8080} 
     81 
     82{ 
     83    $cache = Cache::Memcached::libmemcached->new({ 
     84        servers => [ $ENV{ MEMCACHED_SERVER } ], 
     85        compress_enable => 1, 
     86    }); 
     87 
     88    my $master_key = 'dummy_master'; 
     89    my $key        = 'foo_with_master'; 
     90    $cache->set([ $master_key, $key ], 100); 
     91    is( $cache->get([ $master_key, $key ]), 100, "get with master key" ); 
     92}