什么是PHP的Memcache中的压缩?

时间:2010-01-20 22:52:20

标签: php compression memcached

在PHP.net上我正在查看Memcache::set函数,它有这个可选标志来使用压缩......

  

使用MEMCACHE_COMPRESSED存储   压缩项目(使用zlib)。

$memcache_obj->set('var_key',
                   'some really big variable',
                    MEMCACHE_COMPRESSED,
                    50);

我很好奇,这会带来什么好处,只是占用更少的空间?这似乎会减缓这个过程?

3 个答案:

答案 0 :(得分:25)

在运行PHP的服务器上压缩和解压缩可以很快 - 取决于您的网络和服务器上的负载,它可以比将更多(非压缩)数据传输到和从memcached服务器通过网络。

压缩数据还意味着在memcached服务器上使用更少的内存。

通常,您必须在CPU,网络和RAM之间进行选择 - 您必须考虑服务器和网络,负载和可用资源,以便能够做出决定。

在您的特定情况下,“最快”的解决方案是什么?只有你可以告诉...而唯一的方法就是通过在“真实条件”下测试两种解决方案。


此外,memcached条目不能大于1 MB;我想,在某些方面,压缩可以帮助将条目大于1 MB (当尚未压缩时)放入memcached。

答案 1 :(得分:4)

你是对的,这是占用更少空间占用更多CPU周期之间的权衡。

您也可以选择哪种资源对您,RAM或CPU更为宝贵。

答案 2 :(得分:4)

  1. memcached可用于在计算机之间保留分布式缓存。在这种情况下,需要通过网络或机器之间的其他连接发送对缓存的更新。压缩减少了需要发送的数据量,因此减少了传输所需的时间,因此可以提高系统性能。
  2. 即使在一台主机中,压缩比将内存页面交换到磁盘或从磁盘交换速度快几个数量级,因此如果要交换内存不足,压缩将减少需要交换的数量,从而提高性能。在右上角条件下,压缩可能会减少数据的大小,因此您根本不需要进行交换 - 这是性能上的一大胜利。