我使用PHP中的会话来跟踪用户是否已登录。我不使用它来存储有关用户的任何其他数据;本质上,它类似于检查哈希表以查看用户是否已通过身份验证。
使用redis而不是原生PHP会话有什么好处吗?
我对性能、可伸缩性和安全性很感兴趣(与代码复杂性无关)。
发布于 2014-03-18 07:22:36
您希望会话保存处理程序速度快。这是因为PHP会话将阻止来自同一用户的所有其他并发请求,直到第一个请求完成。
有多种处理程序可用于跨多个服务器的MySQL会话:文件、MySQL数据库、Memcache和Redis。
在我的经验中,数据库方法(使用InnoDB)是最慢的,其次是File w/ NFS。锁定和写争用是主要因素。Memcache和Redis提供相似的性能,是目前为止更好的替代方案,因为所有操作都在RAM中。Redis是我的选择,因为您可以启用磁盘持久性,而Memcache仅基于内存。
如果你想了解更多细节,我会解释Redis Sessions in PHP with Kohana。这是我们用于管理Redis密钥的仪表板:

发布于 2014-11-03 02:05:22
使用Redis之类的东西来存储会话是一个很好的方法,可以让负载均衡的服务器获得更高的性能。
例如,在Amazon Web Services上,负载均衡器有所谓的“粘性会话”。这意味着,当用户第一次连接到您的web应用程序时,例如登录时,负载均衡器将选择您的应用程序服务器之一,并且该用户将继续从该服务器获得服务,直到他们退出您的应用程序。例如,这是因为PHP使用的会话将存储在它们第一次开始使用的应用服务器上。
现在,如果你在一个单独的服务器上使用Redis,然后在你的每个应用服务器上配置你的PHP来存储它在Redis中的会话,你可以关闭这个“粘性会话”。这将意味着您的任何服务器都可以访问会话,因此,对于您的应用程序的每个请求,将从不同的服务器为用户提供服务。这最终有助于更有效地使用负载平衡设置。
发布于 2012-04-10 01:09:59
我真的不认为你需要太多地担心会话,除非你有大量的流量,PHP很好地处理会话,如果你只存储那么少的数据,那么即使有很多请求,它也应该很好,而且性能应该很接近,因为redis不是PHP原生的。
在10k用户的情况下,如果每个用户使用大约1kb的会话数据,它将消耗10000kb或10~mb,这并不多;PHP足够智能,可以使用足够好的数据结构来保存和快速写入和读取这些值。问题是,如果会话数据太大,或者出于某种原因,服务器读取会话数据会消耗太多资源,但通常情况下,这是因为数据太大。
https://stackoverflow.com/questions/10076433
复制相似问题