如果 Memcache 实例达到其内存限制,存储在 Memcached 中的 PHP 个会话会怎样?

What happens to PHP sessions stored in Memcached if the Memcache instance hits its memory limit?

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

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

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

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

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