首頁 >資料庫 >Redis >redis怎麼存session

redis怎麼存session

(*-*)浩
(*-*)浩原創
2019-11-21 10:12:373361瀏覽

redis怎麼存session

Redis儲存session的需要考慮問題:

session資料如何在Redis中儲存? session屬性變更何時觸發儲存? (推薦學習:Redis影片教學

實作:

考慮到session中資料類似map的結構,採用redis中hash儲存session資料比較合適,如果使用單一value儲存session數據,不加鎖的情況下,就會存在session覆蓋的問題,因此使用hash儲存session,每次只保存本次變更session屬性的數據,避免了鎖處理,性能更好。

如果每改一個session的屬性就觸發存儲,在變更較多session屬性時會觸發多次redis寫操作,對性能也會有影響,我們是在每次請求處理完後,做一次session的寫入,並且之寫入變更過的屬性。

如果本次沒有做session的更改, 是不會做redis寫入的,僅當沒有變更的session超過一個時間閥值(不變更session刷新過期時間的閥值),就會觸發session保存,以便session能夠延長有效期限。

兩種實作方式:

session集中儲存(redis,memcached,hbase等)。

不同伺服器上session資料進行複製,兩種方式的優缺點,大家應該一目了然。

基於session集中儲存的實作方案:

新增Filter,攔截請求,包裝HttpServletRequest

改寫getSession方法,從session儲存中獲取session數據,傳回自訂的HttpSession實作

在產生新Session後,寫入sessionid到cookie中

以上是redis怎麼存session的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn