django的session是存在數(shù)據(jù)庫(kù)的session表里?
對(duì)于一般中小型應(yīng)用而言,Session入庫(kù)是能滿足項(xiàng)目需要的,一旦應(yīng)用訪問(wèn)量上升,那頻繁讀寫數(shù)據(jù)庫(kù)中的Session也容易給系統(tǒng)帶來(lái)瓶頸。
Session不是最優(yōu)方案傳統(tǒng)的Session是存儲(chǔ)在應(yīng)用服務(wù)器中的,一般是以文件形式存儲(chǔ)在服務(wù)器硬盤中,這會(huì)導(dǎo)致過(guò)多Session帶來(lái)的磁盤I/O壓力,另一方面也不利于集群部署。在這種背景下,有人就提出將Session存入數(shù)據(jù)庫(kù)來(lái)解決上述問(wèn)題,事實(shí)上的確也解決了問(wèn)題,但另一個(gè)問(wèn)題也隨之而來(lái),那就是:一旦網(wǎng)站并發(fā)過(guò)大,也很容易導(dǎo)致數(shù)據(jù)庫(kù)瓶頸,畢竟數(shù)據(jù)庫(kù)查詢也存在耗時(shí)的。
建議將Session存入Redis在實(shí)際生產(chǎn)環(huán)境中,我們基本上都是基于Redis來(lái)實(shí)現(xiàn)Session會(huì)話保持,這樣做的好處有:
易于分布式/集群部署時(shí)實(shí)現(xiàn)Session互通;
Redis讀寫性能極高,Session頻繁讀寫也不會(huì)帶來(lái)性能壓力;
利用Redis Key的過(guò)期功能可輕松控制Session的過(guò)期;
可以將每個(gè)用戶的session id記錄下來(lái),這樣就可以查到某個(gè)注冊(cè)用戶所有session id, 輕松實(shí)現(xiàn)踢出登陸功能。
以上就是我的觀點(diǎn),對(duì)于這個(gè)問(wèn)題大家是怎么看待的呢?歡迎在下方評(píng)論區(qū)交流 ~ 我是科技領(lǐng)域創(chuàng)作者,十年互聯(lián)網(wǎng)從業(yè)經(jīng)驗(yàn),歡迎關(guān)注我了解更多科技知識(shí)!