我目前正在運行Django應用程序,SESSION_ENGINE配置爲user_sessions.backends.db
(我正在使用this外部庫)。 Django自己的內置會話非常棒,但所有數據都隱藏在base64編碼數據中。這個庫使會話對象像其他ORM對象一樣可訪問。將會話數據從自定義後端遷移到後端緩存(Django)
我需要刪除我對這個庫的依賴;將SESSION ENGINE更改爲緩存以提升性能。
我的挑戰是在不破壞當前會話數據的情況下進行此更改,這就是這個問題的含義。鑑於其性質,圖書館自然不包括db
以外的後端,因此我必須對其進行擴展。
我該如何解決這個問題?例如,在我的腦海中:i)我應該看看這個庫保存會話數據的db表的內容,ii)在每次寫入時寫入將數據保存到高速緩存的功能,iii)轉移到讀取從緩存(用db作爲後備)。
這聽起來是對的嗎?因爲這是一個相當複雜的任務,所以在這個時候,我會很樂意知道任何不該做的事情。提前致謝。
下面是我該怎麼做:弄清楚如何將當前會話數據序列化到Django的會話數據中。查看您是否可以將當前會話ID直接映射到Django會話框架使用的密鑰。將所有會話數據遷移到新的會話存儲。編寫一箇中間件,將舊會話引擎的Cookie密鑰轉換爲新密碼,使其對Django的會話引擎透明。 (如果無法重新使用密鑰,請將地圖old_key => new_key寫入Django的緩存並進行查詢)。 – Tiago