3

好的,所以我有一些关于 Memcache 的奇怪问题。我的缓存技术的整个基本思想是将我的 PHP 脚本请求的数据保存在 Memcached 服务器中。我和我的团队面临的主要问题是,有时保存大量数据有时会超过 Memcached 中项目数据大小的 1MB 限制。为了进一步解释该方法,请想象以下情况:我们有大量数据来配置某个对象,并且这些数据包含大量文本和数字……等等。我们需要保存这些对象中的近 200 个项目,因此我们采用的第一种方法是将整个 200 个对象缓存到 Memcached 中的一个大项目中。该项目可能会超过 1Mb 的限制,因此我们认为我们可以采用一种新方法。我们采用的新方法是将配置对象的数据分解成更小的构建块(因为我们没有

问题如下:当你得到更大的数据时,GET速度会改变吗?或者,Memcached 服务器并行处理的请求数量的限制是否会妨碍第二种方法,因为我们将使用多重 GET 来获取配置对象的多个构建块?

我知道这是一个奇怪的问题,但它对我们正在采用的新方法至关重要,因为它将决定我们将使用的构建块的大小,以及是否在需要时向其中添加数据。

编辑 1:请记住,我们可以在第二种方法中使用 MULTIGET 函数,因此我们不必连接到 Memecached 并等待我们获得的每一位数据的响应。因此将使用并行请求来获取多个密钥。

4

1 回答 1

3

无需深入了解“您在 memcache 中存储的到底是什么以及为什么不使用其他解决方案(例如带有内存表存储引擎的数据库)......

我想说多个请求的成本确实是一个问题——尤其是在远程节点/主机上运行 memcached 的情况下。对大型对象的单个请求很可能总体上更快——您仍然需要传输相同数量的数据,但与 200 件相比,不会有额外的单独请求开销。

顺便说一句...如果您使用 APC 并且没有很多这些大项目,则可以使用它而不是 memcache 来执行本地用户级内存缓存——最大大小可以通过 php 配置设置轻松调整。您不会获得跨主机的分布式访问/共享的好处,但它既快速又简单。

于 2012-10-30T15:28:59.713 回答