Cookie和Redis会话存储有什么区别?

8

我希望在不同节点上的2个应用程序之间共享会话;但是,我对Cookie和Redis会话存储之间的区别感到困惑;例如,cookie会话可能如下所示:

rack.session=BAh7BkkiD3Nlc3Npb25faWQGOgZFRiJFN2YxZDMxMGE5YTNhZjc2NGM1NDBk%0AMzdiODQ0MjcyMzk5MzAxY2YyYzdhNDMwOWVkMzhiNWVlMmY2N2QwYzExNg%3D%3D%0A--ec4ec7b5a807c806e02e2811f4a11d05877a7698

在Redis中,会话存储可能如下所示:
rack:session:eb23c0a055e9e6de3b8ad51efd9g6260d647b2e61326e35f5ff59cd490bfb405"

然而,我对这些会话如何共享感到困惑。在 cookie 方法中,请求携带了会话的状态,但是我不知道 Redis 中的会话实际上如何匹配到两个应用程序之间的状态。有什么建议可以使用 Redis / 在 2 个 Rack 应用程序之间共享会话状态吗?
1个回答

31

Redis会话存储仍然使用cookie在客户端跟踪会话ID,不同之处在于存储会话中要粘贴的实际数据。对于cookie存储,它被放入cookie中并随每个请求一起发送和接收。而对于redis存储,只有会话ID在cookie中传递,实际会话数据使用cookie中的会话ID从Redis中检索。这里有一个关于各种会话存储权衡的 优秀描述.

共享会话可能与Cookie和Redis会话存储一起使用。查看以下两个问题以获取详细信息:


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