perl无法获取memcache数组

时间:2012-03-07 03:29:56

标签: perl memcached

我刚接触perl并使用php和perl处理代码。

我将带有php的数组存储到memcache

$key = 'mytest';
$m = new Memcache;
$m->connect( CACHE_HOST, CACHE_PORT );
$myval = array('a'=>'apple');
$mval = $m->set( $key, $myval );
$mval = $m->get( $key );
print_r($mval);
print "\n";

但是我无法使用perl检索它。但如果$myval是非数组,它会很好用。

#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use Cache::Memcached::Fast;

my $memd = new Cache::Memcached::Fast({ 
    servers => [ { address => 'CACHE_HOST:CACHE_PORT ' }, ], 
    });

#my $val = $memd->get("mytest");
#print Dumper($val);
my @val = $memd->get("mytest");
print Dumper(\@val);

如何检索数组?

2 个答案:

答案 0 :(得分:1)

我从未使用过memcached,但想到的几种可能性是:

  1. 由于您在PHP脚本中创建的数组具有非整数键,因此您可能需要在perl脚本中将对象检索为散列而不是数组。因此,请尝试使用my %val = $memd->get("mytest");代替my @val = ...
  2. 也许$memd->get("mytest")的返回值必须是de-referenced

答案 1 :(得分:0)

这与Perl arrays in memcached中的内容相同,请在提到的页面上查看我的答案 在perl On中可以获取缓存值,如

my $serviceID=$ARGV[0];
my $perlKey=’perl_’.$serviceID;
my $result = $memcli->get($perlKey);

并设置内存缓存,您可以使用

$perlString = $val1.’,’. $val2.’,’. $val3.’,’. $val4.’,’. $val5.’,’. $val6;
$memcache->set($perlKey, $perlString, 0, 10);