gpt4 book ai didi

php - Laravel Redis session 驱动程序 - Redis session 不一致

转载 作者:IT王子 更新时间:2023-10-29 06:12:49 25 4
gpt4 key购买 nike

我正在使用 Laravel 5.7。 Redis 被设置为我的缓存和 session 驱动程序。

在我的 Controller 中,如果我使用 $request->session()->put() 或 Session::put() 写入我的 session ,它会在我为 session ID 打印缓存时显示:

print_r(unserialize(Cache::get(Session::getId())));

请注意,我以这种方式输出 session 数据的主要目标是访问不是我的事件 session 的 session 。

但是,如果我在我的域中使用这些方法中的任何一种写入我的 session ,它们将不会显示在缓存打印中,但会显示(连同确实显示在缓存打印中的所有其他内容) ) 如果我使用:

print_r(Session::all());

我对发生的事情感到困惑。当通过 redis cli 访问数据时,我验证了我所说的也是正确的。显然,如果我在域中写入 session ,它会以某种方式存储在其他地方吗?想法?

最佳答案

您的缓存和 session 是两个完全不同的实体,即使它们可以使用相同的驱动程序。

session 用于维护与用户的关系。查看PHP session documentation了解更多详情。

缓存是您存储和查找经常访问的数据的地方,而不是访问昂贵的代码或数据库。它是短暂的,永远不能保证保存任何数据。

为什么不直接使用 Session::get('whatever')


看到您的编辑后:

Note, my primary goal in outputting session data this way is to access sessions that are not my active session.

您应该通过比缓存更持久的存储机制来存储该数据。正如我之前提到的,缓存是短暂的。您可以使用 redis,因为它是一个键值存储,而不是像 memcached 这样的真正缓存。直接使用它:

Redis::get('user:profile:'.$id);

关于php - Laravel Redis session 驱动程序 - Redis session 不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52731854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com