【问题标题】:Save memcache data to a file or a database将 memcache 数据保存到文件或数据库
【发布时间】:2012-03-27 02:18:24
【问题描述】:

我们正在运行一个执行财务建模的网站,memcache 需要一段时间来构建它的缓存。例如,1 周后,命中数仅为48%,使用的缓存为2GB(已分配5GB)。由于我们不想在服务器崩溃或需要重新启动时丢失该缓存,因此我们希望将其保存在某个地方。

问:将memcache 缓存的内容永久存储(并恢复该内容)的最佳选择是什么?

到目前为止,我们还没有看到 memcache 达到% 的命中率没有提高的程度。我们知道我们很快就可以通过300MB 的数据获得30% 命中,这对应于共享内容的缓存。之后,对象变得更大并且创建频率降低。通过查看我们的 munin 图,我想说我们可以在 2 到 3 个月内达到我们最好的% 命中。我真的认为我们有理由保存我们的 memcache 数据。

仅供参考,我没有添加显示命中/未命中的% 的图表,因为它的发展速度太慢以至于无法真正阅读。

【问题讨论】:

  • 您为 memcached 分配了多少 RAM?是你提到的完整的2GB吗?如果缓存已满且命中率较低,则可能是缓存空间不足,memcached 正在清除最旧的条目(可能仍然有效)。
  • 文件系统或 Berlkey-DB 会更好。您也可以使用Redis,它类似于memcache,但也会自动处理持久存储。
  • @galador:我们已将5GB 分配给内存缓存,现在它在48% 命中,使用2GB
  • 您应该衡量达到 48% 所需的时间,以及它所达到的最大时间是多少?如果需要 10 分钟才能达到 45% 并且只达到 50%,那么您将浪费时间来增加持久性。
  • @DampeS8N:查看带有 munin 数据的已编辑问题。

标签: php database file memcached


【解决方案1】:

你可以试试:

或者您可以在此处找到有关 StackOverflow 的更多提示:alternative to memcached that can persist to disk

【讨论】:

    【解决方案2】:

    我不建议在金融生产环境中使用 Redis,它目前不稳定。这是未来需要注意的事情。

    CouchBase 是一个解决方案。

    您还可以使用 repcached (http://repcached.lab.klab.org/) 将 memcache 数据复制到第二个 memcache 守护进程,以防第一个崩溃,您仍然拥有所有 memcache 数据。如果你愿意,你也可以使用这种类型的设置来对你的内存缓存使用进行负载平衡,我已经使用了很长一段时间了,并且对它的性能非常满意。

    【讨论】:

      猜你喜欢
      • 2017-10-25
      • 2020-12-26
      • 2020-12-17
      • 2021-06-05
      • 2011-02-14
      • 2013-07-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-22
      相关资源
      最近更新 更多