【问题标题】:In-memory cache with LRU expirationLRU 过期的内存缓存
【发布时间】:2011-06-17 16:12:31
【问题描述】:

我正在为我的 PHP 网站寻找内存缓存。它不是高流量网站,我只是想缓存数据和部分页面以提高性能。数据大小从几个字节到几 kB 不等。我目前正在使用 xCache,没有任何问题。

改用memcached好还是redis好?有没有更好的选择?

【问题讨论】:

  • 好吧,如果您想要 memcached 的优势:它可以分发。例如,如果您有多个 PHP 服务器,则不能在 APC 中存储会话,因为会话数据将仅存储在一台服务器上,而不是所有服务器上;)

标签: php memcached redis xcache


【解决方案1】:

如果您没有任何明显的问题,为什么要立即切换? Memcached 或 redis 可能更好,但如果您现在不需要它们,最好离开它们。只要您的缓存策略是合理的并且缓存接口是抽象的,您应该能够在以后真正需要切换到可扩展缓存时添加它们。

PHP 中的 xCache 也是一个 opcoder 缓存。Memcache 和 redis 或多或少像一个 out of proc 键值对。如果您的站点在 2 或 3 个服务器上运行,并且您需要它们共享的上下文,而不仅仅是保留单个实例,这些缓存将有所帮助。

--赛

【讨论】:

  • 我只是想了解切换到 memcache / redis 等高级解决方案的优势。我在网上找不到任何东西,因为这不是苹果之间的比较。
  • 显然不是苹果比较:)。 xCache 是一个 inproc 缓存。 Memcached 或 redis 可帮助您从 proc 中缓存常用的序列化对象,例如页面片段或复杂的数据库查询。它们保持在 proc 之外,因此它们可以在服务器重新启动时持续存在。但与 xCache 相比,它们看起来很慢但更具可扩展性。
【解决方案2】:

就我个人而言,我使用APC,因为我已经将它用于操作码缓存。这样我就必须维护更少的东西。我使用 APC 的另一个原因是,它计划包含在下一个 PHP 版本中,所以我觉得它更“稳定”。

虽然很明显:你应该改变你的缓存系统,只是为了改变它;)如果 XCache 没有出现任何问题,你可能应该保留它。

【讨论】:

  • 我也在使用 xcache 进行操作码缓存。下一个 PHP 版本是指 PHP6 吗?
  • @Joyce:不,PHP6 被取消了。下一个版本可能是 PHP 5.4。
  • PHP 是 LRU 缓存吗(就像 OP 想要的那样)?我从未在文档中看到过明确说明,仅讨论过 TTL。
  • @MPD:嗯,APC 帽子 TTL,所以我将其归类为 LRU。但我对那个话题了解不多。
  • @Joyce 哎呀,是的,我的意思是 APC。 @nikic LRU 和 TTL 缓存不是一回事,也不一定是互斥的。例如,memcached 的文档说明缓存是 LRU 且具有过期时间。
猜你喜欢
  • 2015-08-09
  • 2014-06-22
  • 1970-01-01
  • 2014-12-30
  • 2015-12-16
  • 2012-03-28
  • 1970-01-01
  • 2011-01-31
  • 1970-01-01
相关资源
最近更新 更多