Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将复杂的Perl对象存储到Memcached中?_Perl_Memcached - Fatal编程技术网

如何将复杂的Perl对象存储到Memcached中?

如何将复杂的Perl对象存储到Memcached中?,perl,memcached,Perl,Memcached,我无法将Perl对象存储到Memcached中。我尝试使用Cache::Memcached将复杂的Perl对象存储到Memcached服务器中。Memcached在默认情况下运行,因此我认为保留了64MB。无论如何都不应该达到这个极限 如何将复杂的Perl对象存储到Memcached中 以下代码无法将对象存储在Memcached服务器中。如果将迭代次数从23_171更改为例如4,则没有问题 #!/usr/bin/perl #####################################

我无法将Perl对象存储到Memcached中。我尝试使用
Cache::Memcached
将复杂的Perl对象存储到Memcached服务器中。Memcached在默认情况下运行,因此我认为保留了64MB。无论如何都不应该达到这个极限

如何将复杂的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,对吗


编辑:我刚刚计算出
20000次
迭代会产生一个近似值。Memcached中假定内存为15 MB。

可以存储在Memcached中的值的最大大小通常为1 MB。序列化对象是否超过该大小

memcached的功能使其可配置:

memcached -I 128k # Refuse items larger than 128k.
memcached -I 10m  # Allow objects up to 10MB