在会话memcache处理程序中避免使用LRU删除

时间:2013-08-25 16:02:56

标签: php database session web-applications memcached

我已将会话保存处理程序配置为使用memcache而不是基于文件,因为它在具有多个打开选项卡时导致锁定。我在php.ini(session.save_handler = memcache

中完成了这个

因为我的memcache已满,我相信这些项目正在通过LRU算法删除。你怎么建议克服这个?是否有任何简单的“保存到磁盘”选项,或者set到memcache除非过期,否则不删除这些选项?

1 个答案:

答案 0 :(得分:0)

实际上,memcached将删除项目以便能够存储新项目。并且它没有机制来持久化项目。您可以将其设置为不删除项目,除非已过期,但如果您这样做并且缓存填满未过期的项目,则它将不接受任何新项目,这意味着没有人能够开始新会话(或修改现有的)。

底线:mem 缓存 d是缓存,而不是数据库。仅用于存储您可以在需要时重新创建的数据。 (另请参阅memcached FAQ条目Everyone does it!。)

当memcached服务器启动时,将设置memcached可以使用的内存量。如果服务器上有更多内存,可以安排它使用更多内存,在这种情况下,它可能会使会话保持更长时间。但这只是推迟了不可避免的事情。 (另外,正如从FAQ条目链接到的文章所指出的那样,由于memcached不会以任何方式阻止失败,因此您无法在不丢失已保存会话的所有的情况下重新启动memcached服务器。)