2012-03-07 13 views
0

私はperlを使い始めました。phpとperlを使ってコードを作成しました。perlがmemcacheの配列を取得できません

私はPerlを使用して、それを取得するために失敗するしかし、私は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"; 

にPHPで配列を格納します。 $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); 

アレイを取得するにはどうすればよいですか?

+0

接続が成功したかどうかを確認するためにエラーをチェックしていません。 –

+0

接続は良好です。私はphpの '$ myval'が文字列のときに問題はありません:' $ myval = 'apple'; ' – conandor

+0

接続が良いことをどうやって知っていますか?接続が失敗しなかったことを検証するためのコードのエラーチェックはありません。 –

答えて

1

私はmemcachedのを使用したことがありませんが、心に来る可能性のカップルは、次のとおりです。

  1. あなたはPHPスクリプトで作成された配列を使用すると、オブジェクトを取得する必要があるかもしれません非整数キーを持っているので、 perlスクリプトでは配列ではなくハッシュとして扱います。だからmy @val = ...の代わりにmy %val = $memd->get("mytest");を使用してください
  2. $memd->get("mytest")の戻り値はおそらくde-referencedである必要がありますか?
0

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

のようなキャッシュ値を取得することができますでどこ Perlで言及したページで私の答えを見て、あなたが使用することができますmemcacheのを設定してくださいPerl arrays in memcachedでのように、これは同じように見えます

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

か、JSONなどのPHPとperlの両方で理解されるいくつかの直列化形式を使用します。 – ysth

関連する問題