【发布时间】:2012-04-22 00:23:36
【问题描述】:
我在 PHP 中使用会话来跟踪用户是否登录。我不使用它来存储有关用户的任何其他数据;本质上,这就像检查哈希表以查看用户是否已通过身份验证。
使用 redis 代替原生 PHP 会话会有一些优势吗?
我对性能、可扩展性和安全性很好奇(并不真正关心代码复杂性)。
【问题讨论】:
-
我真的认为你不需要太担心会话,除非你有大量的流量,PHP 可以很好地处理会话,如果你只存储少量数据,即使使用很多请求,关于性能应该很接近,因为 redis 不是 PHP 原生的。
-
@gosukiwi 谢谢!你说的大规模是什么意思?像一次有 10k 用户,还是像 100 万?我知道这取决于我的机器,但我想看看 php 是否有一些上限(比如是否将每个会话存储为一个单独的文件,使其受操作系统文件系统性能的影响)。
-
好吧,我会担心这种情况下服务器的内存使用情况,因为它都存储在 RAM 中,有 10k 个用户,如果每个用户使用 1kb 的会话数据,它将消耗 10,000kb 或10~mb,不算多,PHP足够聪明,可以使用足够好的数据结构来保存并快速写入和读取这些值,问题是会话数据太大,或者由于某种原因服务器消耗太多资源读取会话数据,但通常如果数据太大。
-
@gosukiwi 这就是我正在寻找的答案;谢谢!
-
只是为了记录,gosu kiwi 和 Sripathi Krishnan 都错了。默认情况下,PHP 将会话存储在临时文件中,这意味着 redis 总是会表现得更好(因为它主要是基于内存的)。但话虽如此,如果你一开始没有遇到瓶颈,那么切换到 redis 可能不会获得显着的改进。
标签: php session authentication redis