在 PHP 的 Memcache 中,压缩是用来做什么的?

2022-08-31 00:32:48

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

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

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

我很好奇,这只是使用更少的空间,这样做有什么好处?这似乎会减慢这个过程?


答案 1

在运行 PHP 的服务器上压缩和解压缩可能很快 - 根据您的网络和服务器上的负载,它可能比通过网络在 memcached 服务器之间传输更多(未压缩)数据更快。

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

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

在您的特定情况下,“最快”的解决方案是什么?只有你能分辨出来...了解的唯一方法可能是在“真实条件”下测试这两种解决方案。


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


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

推荐