1

我有一个 Web 应用程序,如果缓存了一些数据库操作,它会运行良好。这些是静态数据,每天都会添加新数据。为了减少数据库读取操作,我将使用 memcached。

如果我不为放入 memcached 的数据指定到期时间会发生什么。它会通过消耗更多的 RAM 来影响性能吗..?在将数据添加到缓存时放弃到期时间是否很好。

PS:我们使用AWS来部署带有ngnix、php、mysql的webapp。

4

1 回答 1

3

大概当您的应用程序在 2050 年仍在运行时,您在 2012 年放入缓存中的某些内容将不再相关。如果您不提供某种到期时间,则只有缓存重置(例如服务器重新启动)最终会刷新缓存。

除非你有无限的内存(而且我很确定 AWS 不提供这个 ;-) 为缓存的项目添加一些过期时间是明智的。

即使 Memcached 会根据最近最少使用的机制使项目过期(感谢@mikewied 指出这一点),缓存仍将在 memcache 开始基于 LRU 逐出项目之前完全填满。不幸的是,Memcache 的 LRU 算法是 perslab,而不是全局的。这意味着基于 LRU 的驱逐可能不是最优的。请参阅Memcached 内存分配和优化

于 2012-06-08T05:57:20.437 回答