2010-07-22 121 views
2

我预先生成了超过2000万个压缩的html页面,将它们存储在磁盘上,并通过Web服务器提供。现在我需要这些数据可以被多个Web服务器访问。 Rsync文件需要很长时间。 NFS似乎可能需要很长时间。缓存二进制数据的最佳方式是什么?

我考虑过使用像Redis这样的键/值存储,但Redis仅将字符串存储为值,并且我怀疑它会压缩gzip文件。

我目前的想法是使用带有字符串键和二进制值的简单MySQL/Postgres表。在我实施这个解决方案之前,我想看看是否有其他人在这方面有经验并能提供建议。

回答

2

我已经对Redis很好了,那就是其中之一。

我也听说过关于memcached的非常积极的事情。它也适用于二进制数据。
以Facebook为例:这些人使用memcached,也为图像!
如您所知,图像是二进制的。

因此,得到memcached,获得一台机器来利用它,一个绑定的PHP或任何你用于您的网站,并离开你去!祝你好运!

+0

我的memcached问题是,如果电源熄灭,我会丢失我的数据。因此,除了从停电恢复之外,我还得重新构建缓存。 – Scott 2010-07-23 19:48:52

+0

这取决于你在找什么,确切地说,预算是多少。考虑有“镜像”或数据,即使一台机器出现故障,其他机器也可以使用。此外,如果服务器出现故障并且是唯一的服务器,那么您可以编写脚本以在启动时重新上传hdisk中的数据或其他内容。有很多选择。我不会去一个ACID数据库,因为它有很多开销,这是不需要的。它也不像我所知的那样缓存memcached所做的数据,后者是专门为您的目的而设计的,因此针对该数据库进行了优化 – Poni 2010-07-23 20:45:34

+0

我同意关于数据库,但我已经给出了探索一些选择的豪华,所以我想到了什么。 – Scott 2010-07-24 16:52:15

1

首先,为什么要缓存gzips?网络等待时间和传输时间比压缩文件所花的CPU时间高几个数量级,因此动态执行它可能是最简单的解决方案。但是,如果你肯定有需要,那么我不确定中央数据库会比文件共享更快(当然,你应该测量不会猜测这些东西!)。一个简单的方法可能是将原始文件托管在NFS共享上,并让每个Web服务器按需在本地进行gzip和缓存。 memcached(正如Poni所建议的)也是一个很好的选择,但增加了一层复杂性。

+0

我正在对文件系统,postgres和东京内阁进行基准测试。我会用结果更新我的问题。 – Scott 2010-07-23 19:49:46

相关问题