Perl не может получить массив memcache - PullRequest
0 голосов
/ 07 марта 2012

Я новичок в 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 ]

1 голос
/ 07 марта 2012

Я никогда не использовал memcached, но на ум приходят следующие возможности:

  1. Поскольку массив, который вы создали в скрипте PHP, имеет нецелочисленный ключ, вам может потребоваться получитьобъект в виде хэша, а не массива, в скрипте perl.Поэтому попробуйте использовать my %val = $memd->get("mytest"); вместо my @val = ...
  2. Возможно, возвращаемое значение $memd->get("mytest") должно быть без ссылки ?
0 голосов
/ 04 декабря 2013

Это похоже на Массивы Perl в memcached , пожалуйста, посмотрите мой ответ на упомянутой странице, где В perl On можно получить значения кеша типа

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

и для установки memcache вы можете использовать

$perlString = $val1.’,’. $val2.’,’. $val3.’,’. $val4.’,’. $val5.’,’. $val6;
$memcache->set($perlKey, $perlString, 0, 10); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...