av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

創(chuàng)新互聯(lián)GoFrame教程:GoFrameSession-基本介紹

?GOFrame?框架提供了完善的?Session?管理能力,由?gsession?組件實(shí)現(xiàn)。由于?Session?機(jī)制在?HTTP?服務(wù)中最常用,因此后續(xù)章節(jié)中將著重以?HTTP?服務(wù)為示例介紹?Session?的使用。

基本介紹

接口文檔:https://pkg.go.dev/github.com/gogf/gf/v2/os/gsession

任何時(shí)候都可以通過?ghttp.Request?獲取?Session?對(duì)象,因?yàn)?Cookie?和?Session?都是和請(qǐng)求會(huì)話相關(guān),因此都屬于?Request?的成員對(duì)象,并對(duì)外公開。?GoFrame?框架的?Session?默認(rèn)過期時(shí)間是24小時(shí)。

?SessionId?默認(rèn)通過?Cookie?來傳遞,并且也支持客戶端通過?Header?傳遞?SessionId?,?SessionId?的識(shí)別名稱可以通過?ghttp.Server?的?SetSessionIdName?進(jìn)行修改。?Session?的操作是支持并發(fā)安全的,這也是框架在對(duì)?Session?的設(shè)計(jì)上不采用直接以?map?的形式操作數(shù)據(jù)的原因。在?HTTP?請(qǐng)求流程中,我們可以通過?ghttp.Request?對(duì)象來獲取?Session?對(duì)象,并執(zhí)行相應(yīng)的數(shù)據(jù)操作。

此外,?ghttp.Server?中的?SessionId?使用的是客戶端的 ?RemoteAddr + Header? 請(qǐng)求信息通過?guid?模塊來生成的,保證隨機(jī)及唯一性:https://github.com/gogf/gf/v2/blob/master/net/ghttp/ghttp_request.go

需要注意的是,?ghttp.Request?中的?Session?對(duì)象采用了"懶初始化(?LazyInitialization?)"設(shè)計(jì)方式,默認(rèn)在?Request?中有一個(gè)?Session?屬性對(duì)象,但是并未初始化(一個(gè)空對(duì)象),只有在使用?Session?屬性對(duì)象的方法時(shí)才會(huì)真正執(zhí)行初始化。這樣的設(shè)計(jì)既保障了未使用?Session?特性的請(qǐng)求執(zhí)行性能,也保證了組件使用的易用性。

gsession模塊

?Session?的管理功能由獨(dú)立的?gsession?模塊實(shí)現(xiàn),并已完美整合到了?ghttp.Server?中。由于該模塊是解耦獨(dú)立的,因此可以應(yīng)用到更多不同的場景中,例如:?TCP?通信、?gRPC?接口服務(wù)等等。在?gsession?模塊中有比較重要的三個(gè)對(duì)象/接口:

  1. ?gsession.Manager?:管理?Session?對(duì)象、?Storage?持久化存儲(chǔ)對(duì)象、以及過期時(shí)間控制。
  2. ?gsession.Session?:單個(gè)?Session?會(huì)話管理對(duì)象,用于?Session?參數(shù)的增刪查改等數(shù)據(jù)管理操作。
  3. ?gsession.Storage?:這是一個(gè)接口定義,用于?Session?對(duì)象的持久化存儲(chǔ)、數(shù)據(jù)寫入/讀取、存活更新等操作,開發(fā)者可基于該接口實(shí)現(xiàn)自定義的持久化存儲(chǔ)特性。 該接口定義詳見:https://github.com/gogf/gf/v2/blob/master/os/gsession/gsession_storage.go

存儲(chǔ)實(shí)現(xiàn)方式

?gsession?實(shí)現(xiàn)并為開發(fā)者提供了常見的四種?Session?存儲(chǔ)實(shí)現(xiàn)方式:

  • 基于文件存儲(chǔ)(默認(rèn))。單節(jié)點(diǎn)部署方式下比較高效的持久化存儲(chǔ)方式:?Session-File ?
  • 基于純內(nèi)存存儲(chǔ)。單節(jié)點(diǎn)部署,性能最高效,但是無法持久化保存,重啟即丟失:?Session-Memory ?
  • 基于?Redis?存儲(chǔ)(?Key-Value?)。遠(yuǎn)程?Redis?節(jié)點(diǎn)存儲(chǔ)?Session?數(shù)據(jù),支持應(yīng)用多節(jié)點(diǎn)部署:?Session-Redis-KeyValue ?
  • 基于?Redis?存儲(chǔ)(?HashTable?)。遠(yuǎn)程?Redis?節(jié)點(diǎn)存儲(chǔ)?Session?數(shù)據(jù),支持應(yīng)用多節(jié)點(diǎn)部署:?Session-Redis-HashTable ?

四種方式各有優(yōu)劣,詳細(xì)介紹請(qǐng)查看對(duì)應(yīng)章節(jié)。


網(wǎng)頁題目:創(chuàng)新互聯(lián)GoFrame教程:GoFrameSession-基本介紹
轉(zhuǎn)載注明:http://uogjgqi.cn/article/cdpcdos.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流