2011-06-21 56 views
4

在我的應用程序中,我想保留特定於當前正在用戶特定會話中訪問我的web應用程序的用戶的大量內存數據。至於我知道玩框架使用cookie來存儲具有4k限制的會話數據。我怎樣才能擁有更大的會話數據? ehacache memcache在這裏有幫助嗎?此會話具有用戶上次活動的到期時間。通過客戶端cookie播放框架會話

回答

4

如果會話數據緩存好,最好將其保存在緩存中,將密鑰保存爲用戶標識,並在用戶註銷時將其清除。從相關數據庫更新/刪除中從數據庫重新加載它。如果需要將內容保存在外部緩存中,如memcache,將有助於擴展,並且可以讓您長期運行到分佈式緩存。查看Share Nothing這篇有趣的文章。

2

與Play的想法是消除會議的需要和在內存中保存大量的信息。內存方法的問題在於,您將用戶綁定到數據所在的特定服務器,因爲該方法無需任何方法即可輕鬆進行橫向擴展,而無需擔心粘滯會話等問題。

您擁有的選項是 - 將臨時數據存儲在可通過userId或用戶會話的其他唯一標識符訪問的臨時數據庫中。該數據庫將與您的服務器端會話等效。 - 使用緩存。但是,緩存的想法是,如果信息不在緩存中,則可以從數據庫(或其他來源)中檢索它。緩存不應該保證數據可用。如果在內存緩存(如ehcache)的情況下,如果您有一組負載均衡的服務器,則可能無法保證所有請求都回到同一臺服務器,因此緩存中的數據可能無法使用所有服務器用於特定會話。

您的問題的答案取決於您的用例,但我認爲數據庫是基於您提供的信息的最佳方法。

+0

第一句話出錯了,但我不確定是什麼。 –

+0

謝謝。 iPad自動更正爲了得到,我必須點擊一個錯誤的字母。 – Codemwnci