【问题标题】:What happens to PHP sessions stored in Memcached if the Memcache instance hits its memory limit?如果 Memcache 实例达到其内存限制,存储在 Memcached 中的 PHP 会话会发生什么情况?
【发布时间】:2018-12-05 22:16:38
【问题描述】:

我们使用 memcache 集群作为多个网络服务器的会话存储。

不过,我很好奇,如果我们设置较长的会话到期时间并且 memcache 实例没有大量 RAM,会产生什么影响。

如果 memcache 达到其内存限制,它会自动释放 RAM(并因此丢弃会话)吗?还是别的什么?

【问题讨论】:

  • 与 memcached 中的其他内容相同。这就是为什么 Memcached 应该只用于缓存,而不应该用于无法重新创建的数据。
  • ...这不应该是一个答案吗?
  • 我从来没有真正使用过这个配置,所以我不能确定有没有什么特别的东西可以减轻我假设的效果。

标签: php session memcached


【解决方案1】:

Memcached 将使用最近最少使用 (LRU) 驱逐来释放内存。出于这个原因,Memcached 或任何与此相关的缓存不应用于长期会话(对于短期会话很好)。

对于长期存在的会话,您应该使用数据库等永久存储。如果性能是一个问题,您可以通过缓存会话查询来模拟直写缓存(例如,这是 Django 的 cached_db 会话存储所做的)。我不知道 PHP 中有任何直写实现,但它很容易实现。

【讨论】:

    猜你喜欢
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2012-11-13
    • 2011-06-28
    相关资源
    最近更新 更多