Memcache set超过1M的数据解决方法
2013-5-18 13:23 Saturday  

分类: PHP 标签: 缓存 Memcache 压缩 数据 threshold 评论(73) 浏览(117802)

最近项目中有个数据发现没有缓存到memcache中,经过分析,发现是数据过大的原因,百度的结果是memcache超过1M貌似就会缓存失败,解决的方法就是通过压缩,memcache提供了两种压缩方式

一是在做set时,

Memcache::set ( string $key , mixed $var [, int $flag [, int $expire ]] )

参数$flag 就是是否开启压缩:使用MEMCACHE_COMPRESSED指定对值进行压缩(使用zlib)。

另外一种是在连接服务器后:

Memcache::setCompressThreshold ( int $threshold [, float $min_savings ] )

threshold

控制多大值进行自动压缩的阈值。

min_saving

指定经过压缩实际存储的值的压缩率,支持的值必须在0和1之间。默认值是0.2表示20%压缩率。

很明显,第二种帅一点,因为它可以控制多大的时候才压缩,而且不用在每个set前都去用PHP判断数据大小.
+1 26

留下你的看法: