2
我無法將Perl對象存儲到Memcached中。我嘗試使用Cache::Memcached
將複雜的Perl對象存儲到Memcached服務器中。 Memcached在默認情況下運行,所以我認爲有64 MB保留。無論如何都不應該達到這個限制。如何將複雜的Perl對象存儲到Memcached中?
如何將複雜的Perl對象存儲到Memcached中?
以下代碼無法將對象存儲在Memcached服務器中。如果將23_171
的迭代次數更改爲例如4
,則沒有問題。
#!/usr/bin/perl
############################################################################
# Script
use strict;
use warnings FATAL => 'all';
use Cache::Memcached;
my $memd = Cache::Memcached->new(servers => ['127.0.0.1:11211']);
my $obj = MyModule->new;
$obj->add(MySubModule->new($_)) for (1 .. 23_171);
$memd->set('obj', $obj) or die "failed";
$memd->disconnect_all;
############################################################################
# Collector-Module
package MyModule;
sub new { bless { jar => [] }, $_[0]; }
sub add { push @{ $_[0]->{jar} }, $_[1]; }
############################################################################
# Entry-Module
package MySubModule;
sub new { bless { id => $_[1], rnd => rand($_[1]) }, $_[0]; }
sub id { $_[0]->{id} = $_[0]->{id} // $_[1]; }
sub rnd { $_[0]->{rnd}; }
無論使用哪個序列化程序或任何序列化程序,此對象都不應占用10 MB,對吧?
編輯:我只是想通過20_000
迭代結果到aprox。 Memcached中有15 MB假定內存。