使用memcached作为PHP会话的优缺点

7
除了重启memcached时所有会话都会丢失并注销用户的缺点之外,使用memcached存储PHP会话数据而不是文件还有哪些缺点?是否存在安全问题?与在磁盘上使用标准文件相比,性能是否更好?

4
memcached的开发者不建议使用memcache存储会话数据,因为它不是持久性的(就像你说的,如果清空memcached或其他情况发生,所有用户都将被注销)。我个人使用数据库来存储会话。它快速可靠。 - djthoms
2个回答

2
虽然许多人已经通过使用Memcached来优化数据库性能,但它可能并不是每种情况下的最佳解决方案。
以下是Memcached的一些缺点:
1. 大小要求 2. 文档支持较少 3. 不稳定(如果Memcached服务器实例崩溃,则会丢失会话中存储的任何对象数据) 4. 安全性差(Memcached中没有内置身份验证)。
但是,由于以下原因,Memcached仍然是许多应用程序的不错选择:
1. Memcached可以弥补不足的ACID属性,并且永远不会阻塞。 2. Memcached是跨平台的。 3. 跨DBMS。 4. 它很便宜。
让我们看看光明的一面!

当你处理会话时,阻塞实际上可能是一件好事。 - Ja͢ck
Memcached拥有SASLAuth身份验证; 这可能会使您的第四点失效? - culix

1

这并不是使用memcached作为会话的安全问题,而是我经常遇到的问题:您必须确保您的memcached实例要么使用unix套接字,要么 - 如果它们绑定到某个端口 - 则其端口被阻止。否则,人们可以通过telnet查看、修改和删除(会话)数据。

此外,正如名称所示,它是一种缓存解决方案,而不是存储解决方案。因此,如果您决定将memcached用于会话存储,您应该将其数据库备份或文件存储备份,以便在出现缓存未命中(由于超时、手动删除、刷新或因为分配的内存已满并被修剪)时,它可以在说“不,它不在那里”之前检查更持久的存储类型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接