首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >redis与原生会话

redis与原生会话
EN

Stack Overflow用户
提问于 2012-04-10 00:35:50
回答 3查看 19.1K关注 0票数 24

我使用PHP中的会话来跟踪用户是否已登录。我不使用它来存储有关用户的任何其他数据;本质上,它类似于检查哈希表以查看用户是否已通过身份验证。

使用redis而不是原生PHP会话有什么好处吗?

我对性能、可伸缩性和安全性很感兴趣(与代码复杂性无关)。

EN

回答 3

Stack Overflow用户

发布于 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密钥的仪表板:

票数 24
EN

Stack Overflow用户

发布于 2014-11-03 02:05:22

使用Redis之类的东西来存储会话是一个很好的方法,可以让负载均衡的服务器获得更高的性能。

例如,在Amazon Web Services上,负载均衡器有所谓的“粘性会话”。这意味着,当用户第一次连接到您的web应用程序时,例如登录时,负载均衡器将选择您的应用程序服务器之一,并且该用户将继续从该服务器获得服务,直到他们退出您的应用程序。例如,这是因为PHP使用的会话将存储在它们第一次开始使用的应用服务器上。

现在,如果你在一个单独的服务器上使用Redis,然后在你的每个应用服务器上配置你的PHP来存储它在Redis中的会话,你可以关闭这个“粘性会话”。这将意味着您的任何服务器都可以访问会话,因此,对于您的应用程序的每个请求,将从不同的服务器为用户提供服务。这最终有助于更有效地使用负载平衡设置。

票数 24
EN

Stack Overflow用户

发布于 2012-04-10 01:09:59

我真的不认为你需要太多地担心会话,除非你有大量的流量,PHP很好地处理会话,如果你只存储那么少的数据,那么即使有很多请求,它也应该很好,而且性能应该很接近,因为redis不是PHP原生的。

在10k用户的情况下,如果每个用户使用大约1kb的会话数据,它将消耗10000kb或10~mb,这并不多;PHP足够智能,可以使用足够好的数据结构来保存和快速写入和读取这些值。问题是,如果会话数据太大,或者出于某种原因,服务器读取会话数据会消耗太多资源,但通常情况下,这是因为数据太大。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10076433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档