PHP Memcached字符串大小超过
下面的代码PHP Memcached字符串大小超过,php,memcached,telnet,Php,Memcached,Telnet,下面的代码 $memcached = new Memcached(); $memcached->addServer('127.0.0.1', 11211); $data = json_encode(array( 'string1' => md5(time()), 'string2' => md5(time()) )); var_dump($memcached->set('foo', $data, 300)); 工作正常吗 # tel
$memcached = new Memcached();
$memcached->addServer('127.0.0.1', 11211);
$data = json_encode(array(
'string1' => md5(time()),
'string2' => md5(time())
));
var_dump($memcached->set('foo', $data, 300));
工作正常吗
# telnet 127.0.0.1 11211
# get foo
VALUE foo 0 91
{"string1":"884e036fd865cac1ef26b5f7a920c2c2","string2":"884e036fd865cac1ef26b5f7a920c2c2"}
但是当我添加第三行时
$data = json_encode(array(
'string1' => md5(time()),
'string2' => md5(time()),
'string3' => md5(time())
));
var_dump($memcached->set('foo', $data, 300));
它产生以下结果
# get foo
VALUE foo 16 63
x«V*.)ÊÌK7T²RJ322J11KL6M4I4OM¶°H57·4716I5Oµ0NSÒ*6"E±11krW&z
我猜memcached在某种程度上压缩了这个值,但为什么它不在get上恢复它呢
知道怎么解决吗?是的,因为
cli
和php
使用不同的选项
Memcached::OPT_COMPRESSION is true by default
启用或禁用有效负载压缩。启用时,超过某个阈值(当前为100字节)的项值将在存储期间压缩,并在检索期间透明地解压缩
该值可以是除资源之外的任何有效PHP类型,因为这些类型不能以序列化形式表示。如果启用了Memcached::OPT_COMPRESSION选项,则序列化值也将在存储之前进行压缩
它压缩特定长度后的数据。。。这就是为什么当您尝试从telnet获取数据时,您不会看到
json
,而是看到压缩版本
是,因为cli
和php
使用不同的选项
Memcached::OPT_COMPRESSION is true by default
启用或禁用有效负载压缩。启用时,超过某个阈值(当前为100字节)的项值将在存储期间压缩,并在检索期间透明地解压缩
该值可以是除资源之外的任何有效PHP类型,因为这些类型不能以序列化形式表示。如果启用了Memcached::OPT_COMPRESSION选项,则序列化值也将在存储之前进行压缩
它压缩特定长度后的数据。。。这就是为什么当您试图从telnet获取数据时,您看不到json
,而是压缩版本的原因。根据来源:压缩可以是fastlz
或zlib
其值由memcached.compression\u type
configuration指令()指定
根据来源:压缩可以是fastlz
或zlib
其值由memcached.compression\u type
configuration指令()指定
如何解决什么问题?你试过在php中检索它吗?我需要在最后有一个JSON字符串。目前它不是您可以看到的JSON。您尝试过用PHP检索数据吗?@Aley:在telnet中它不是JSON,因为没有人向您保证客户端(PHP扩展)存储它的格式。@Aley:任意客户端可以自由使用任何格式,甚至gzip。如何解决什么?你试过在php中检索它吗?我需要在最后有一个JSON字符串。目前它不是您可以看到的JSON。您是否尝试过使用PHP检索数据?@Aley:在telnet中它不是JSON,因为没有人向您保证客户端(PHP扩展)存储它的格式。@Aley:任意客户端都可以自由使用任何格式,即使是gzip。