我已将会话保存处理程序配置为使用内存缓存而不是基于文件,因为它在打开多个选项卡时导致锁定。我已经在 php.ini ( session.save_handler = memcache
)
因为我的memcache已经满了,我相信这些项目正在通过LRU算法被删除。你建议如何克服这个问题?是否有任何简单的保存到磁盘选项,或者set
内存缓存不删除这些,除非过期?
我已将会话保存处理程序配置为使用内存缓存而不是基于文件,因为它在打开多个选项卡时导致锁定。我已经在 php.ini ( session.save_handler = memcache
)
因为我的memcache已经满了,我相信这些项目正在通过LRU算法被删除。你建议如何克服这个问题?是否有任何简单的保存到磁盘选项,或者set
内存缓存不删除这些,除非过期?
实际上,memcached 将删除项目以便能够存储新项目。它没有持久化项目的机制。您可以将其设置为不删除项目,除非过期,但如果您这样做并且缓存充满了未过期的项目,那么它将不接受任何新项目,这意味着没有人将能够启动新会话(或修改现有的)。
底线:mem cache d 是缓存,而不是数据库。仅使用它来存储您可以在需要时重新创建的数据。(另外,请参阅 memcached 常见问题解答条目每个人都这样做!。)
memcached 可以使用的内存量是在 memcached 服务器启动时设置的。如果服务器上有更多内存,您可以安排它使用更多内存,在这种情况下,它可能会使会话保持更长时间。但这只是推迟了不可避免的事情。(此外,正如从该常见问题条目链接到的文章所指出的那样,由于 memcached 没有任何抗故障能力,因此您无法在不丢失所有已保存会话的情况下重新启动 memcached 服务器。)