8

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

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

在 Redis 中,会话存储可能如下所示:

rack:session:eb23c0a055e9e6de3b8ad51efd9g6260d647b2e61326e35f5ff59cd490bfb405"

但是,我很困惑如何共享这些会话。而在 cookie 方法中,请求携带会话的状态,我看不到 Redis 中的会话实际上如何与 2 个应用程序之间的状态匹配。有什么建议如何在 2 个机架应用程序之间使用 Redis / 共享会话状态?

4

1 回答 1

25

Redis 会话存储仍然使用 cookie 来跟踪客户端的会话 ID。不同之处在于存储在会话中的实际数据的位置。使用 cookie 存储,它被填充到 cookie 中,并随着每个请求来回发送。使用 redis-store,只有 session id 被传递到 cookie 中,实际的 session 数据是使用 cookie 中的 session id 从 Redis 检索的。这是对不同会话存储的各种权衡的很好描述。

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

于 2013-01-16T01:54:42.650 回答