2013-01-15 35 views
2

我想在不同節點上的2個應用程序之間共享會話;不過,我很困惑Cookie和Redis會話商店有什麼不同?例如一個Cookie的會話可能是這樣的:Cookie和Redis Session商店有什麼區別?

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

在Redis的,會話店,可能是這樣的:

rack:session:eb23c0a055e9e6de3b8ad51efd9g6260d647b2e61326e35f5ff59cd490bfb405" 

不過,我很困惑,這些會話的方式可以共享。儘管在cookie方法中,請求包含會話的狀態,但我無法看到Redis中的會話實際上如何匹配以在2個應用程序中聲明。有關如何在2個機架應用中使用Redis /共享會話狀態的任何建議?

回答

13

Redis會話存儲仍然使用cookie來跟蹤會話ID客戶端。不同之處在於您存儲會話中保存的實際數據。隨着cookie存儲,它被塞進cookie中並隨每個請求來回發送。使用redis-store,cookie中僅傳遞會話標識,並使用cookie中的會話標識從Redis中檢索實際的會話數據。這裏有各種各樣的trade-offs with different session stores的很好的描述。

共享會話可能會同時適用於Cookie和Redis會話存儲。看看這兩個問題的詳細信息:

相關問題