Open
Description
Hi,
I make a test with this scenario:
- I have 1 text file with data size around 1.1 MB
- Memcached item's max size is set as 1 MB (default)
- I open the file, read the data then store it to memcached with 3 ways: no compression, compression with Fastlz, compression with Zlib.
The result
- With no compression, I got error "ITEM TOO BIG" (correct)
- With Fastlz, I got error "ITEM TOO BIG" (not correct)
- With ZLib, I got "SUCCESS" (correct)
Harrys-MacBook-Pro:web harryhoang$ php test.php
Data size (uncompressed): 1100000 bytes
Data size (serialize, uncompressed): 1100013 bytes
Data size (compressed, zlib): 832435 bytes
Space Saving: 24%
Memcached factor: 1.3
Save without compression: ...
Code:37
Message:ITEM TOO BIG
Save with Fastlz: ...
Code:37
Message:ITEM TOO BIG
Save with Zlib: ...
Code:0
Message:SUCCESS
So, I think we have issue when storing data using Fastlz. Please help me to check, thank you.
My memcached config
memcached support => enabled
libmemcached version => 1.0.18
memcached.compression_factor => 1.3 => 1.3
memcached.compression_threshold => 2000 => 2000
memcached.compression_type => fastlz => fastlz
memcached.serializer => igbinary => igbinary
memcached.sess_binary => no value => no value
memcached.sess_connect_timeout => 1000 => 1000
memcached.sess_consistent_hash => no value => no value
memcached.sess_lock_expire => 0 => 0
memcached.sess_lock_max_wait => 0 => 0
memcached.sess_lock_wait => 150000 => 150000
memcached.sess_locking => 1 => 1
memcached.sess_number_of_replicas => 0 => 0
memcached.sess_prefix => memc.sess.key. => memc.sess.key.
memcached.sess_randomize_replica_read => no value => no value
memcached.sess_remove_failed => 1 => 1
memcached.sess_sasl_password => no value => no value
memcached.sess_sasl_username => no value => no value
memcached.store_retry_count => 2 => 2
memcached.use_sasl => no value => no value
The test code
/** test memcached */
$originalData = null;
$originalDataSize = null;
$dataSerialize = null;
$dataSerializeSize = null;
$dataSerializeCompressed = null;
$dataSerializeCompressedSize = null;
$fileName = '/Users/harryhoang/Downloads/testFile.txt';
$sourceFile = fopen($fileName,'r');
if ($sourceFile) {
$originalData = fread($sourceFile, filesize($fileName));
$originalDataSize = strlen($originalData);
$dataSerialize = serialize($originalData);
$dataSerializeCompressed = gzcompress($dataSerialize);
$dataSerializeSize = strlen($dataSerialize);
$dataSerializeCompressedSize = strlen($dataSerializeCompressed);
}
else {
exit;
}
echo 'Data size (uncompressed): '.$originalDataSize." bytes \n";
echo 'Data size (serialize, uncompressed): '.$dataSerializeSize." bytes \n";
echo 'Data size (compressed, zlib): '.$dataSerializeCompressedSize." bytes \n";
echo 'Space Saving: '.round(($dataSerializeSize - $dataSerializeCompressedSize)/$dataSerializeSize * 100).'%';
echo "\n";
$memcached = new \Memcached;
$memcached->addServer('localhost',11211);
echo 'Memcached factor: '.ini_get('memcached.compression_factor')."\n";
echo "\nSave without compression: ... \n";
$memcached->setOption(\Memcached::OPT_COMPRESSION, false);
$result = $memcached->set('test', $originalData);
echo 'Code:'. $memcached->getResultCode()."\n";
echo 'Message:'. $memcached->getResultMessage()."\n";
echo "\nSave with Fastlz: ... \n";
$memcached->setOption(\Memcached::OPT_COMPRESSION, true);
$memcached->setOption(\Memcached::OPT_COMPRESSION_TYPE, Memcached::COMPRESSION_FASTLZ);
$memcached->setOption(\Memcached::OPT_SERIALIZER, \Memcached::SERIALIZER_PHP);
$result = $memcached->set('test', $originalData);
echo 'Code:'. $memcached->getResultCode()."\n";
echo 'Message:'. $memcached->getResultMessage()."\n";
echo "\nSave with Zlib: ... \n";
$memcached->setOption(\Memcached::OPT_COMPRESSION, true);
$memcached->setOption(\Memcached::OPT_COMPRESSION_TYPE, Memcached::COMPRESSION_ZLIB);
$memcached->setOption(\Memcached::OPT_SERIALIZER, \Memcached::SERIALIZER_PHP);
$result = $memcached->set('test', $originalData);
echo 'Code:'. $memcached->getResultCode()."\n";
echo 'Message:'. $memcached->getResultMessage()."\n";
echo 'Done'."\n";
Metadata
Metadata
Assignees
Labels
No labels