Cookie 和 Redis 会话存储有啥区别?
Posted
技术标签:
【中文标题】Cookie 和 Redis 会话存储有啥区别?【英文标题】:What is the difference between a Cookie and Redis Session store?Cookie 和 Redis 会话存储有什么区别? 【发布时间】:2012-12-30 03:07:42 【问题描述】:我想在不同节点上的 2 个应用程序之间共享会话;但是,我很困惑 Cookie 和 Redis 会话存储之间的区别是什么;例如cookie 会话可能如下所示:
rack.session=BAh7BkkiD3Nlc3Npb25faWQGOgZFRiJFN2YxZDMxMGE5YTNhZjc2NGM1NDBk%0AMzdiODQ0MjcyMzk5MzAxY2YyYzdhNDMwOWVkMzhiNWVlMmY2N2QwYzExNg%3D%3D%0A--ec4ec7b5a807c806e02e2811f4a11d05877a7698
在 Redis 中,会话存储可能如下所示:
rack:session:eb23c0a055e9e6de3b8ad51efd9g6260d647b2e61326e35f5ff59cd490bfb405"
但是,我对如何共享这些会话感到困惑。而在 cookie 方法中,请求携带会话的状态,我看不到 Redis 中的会话实际上如何与 2 个应用程序之间的状态匹配。有什么建议如何在 2 个机架应用程序之间使用 Redis / 共享会话状态?
【问题讨论】:
【参考方案1】:Redis 会话存储仍然使用 cookie 来跟踪会话 id 客户端。不同之处在于存储在会话中的实际数据的位置。使用 cookie 存储,它被填充到 cookie 中,并随着每个请求来回发送。使用 redis-store,只有 session id 被传递到 cookie 中,实际的 session 数据是使用 cookie 中的 session id 从 Redis 检索的。这是对各种trade-offs with different session stores 的精彩描述。
共享会话可能适用于 Cookie 和 Redis 会话存储。详情请查看以下两个问题:
Rails Checkout SSL heroku Subdomain Session Not Working in Rails 2.3 and Rails 3 on Heroku with/without a Custom Domain?【讨论】:
以上是关于Cookie 和 Redis 会话存储有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
AngularJS 中会话存储、本地存储和 Cookie 的区别