session、socket持久化在代碼層次究竟是什么操作

在代碼角度來(lái)講,無(wú)論是session,還是socket,在nodejs中,均表示為一個(gè)對(duì)象,所以我一直想的是,把session、socket對(duì)象序列化存儲(chǔ)在redis或其它數(shù)據(jù)庫(kù)中,用到對(duì)象時(shí),再將數(shù)據(jù)反序列化成對(duì)象(實(shí)際就是這些對(duì)象持久化后,就不在內(nèi)存里保存這些信息,就能減少內(nèi)存開(kāi)銷(xiāo)),是的,你們沒(méi)看錯(cuò),我真的是這樣想的。

所以在寫(xiě)代碼時(shí),就會(huì)出現(xiàn)問(wèn)題。比如:用socket.io的時(shí)候,嘗試用querystring.stringify(socket)去進(jìn)行序列化,得到的結(jié)果是:

nsp=&server=&adapter=&id=dDLa5kYZNUqIVCSmAAAr&client=&conn=&rooms=&acks=&connected=true&disconnected=false&handshake=&flags=&

很顯然,這個(gè)是可以存儲(chǔ)到redis中的,但是從redis里取出數(shù)據(jù)通過(guò)querystring.parse()反序列,但是顯然不能當(dāng)作socket用(我沒(méi)測(cè)試)。所以到這里,我覺(jué)得持久化不是指這樣的操作。

那么持久化應(yīng)該是什么?

session好說(shuō),nodejs,用的koa-session2庫(kù),session對(duì)對(duì)象就是存儲(chǔ)的一些用戶信息的object,所以直接序列化放redis,用的時(shí)候就反序列化好了。

socket我認(rèn)為序列化的應(yīng)該是socket id這類(lèi)的信息(還有一些用戶),如果需要實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)聊天,就不用在內(nèi)存里額外保存socket id,通過(guò)redis進(jìn)行查詢獲取。不然反序列化整個(gè)對(duì)象,進(jìn)行信息發(fā)送時(shí),從那個(gè)地方獲取tcp連接通道傳送信息呢?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類(lèi)型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,629評(píng)論 1 32
  • https://nodejs.org/api/documentation.html 工具模塊 Assert 測(cè)試 ...
    KeKeMars閱讀 6,603評(píng)論 0 6
  • JAVA序列化機(jī)制的深入研究 對(duì)象序列化的最主要的用處就是在傳遞,和保存對(duì)象(object)的時(shí)候,保證對(duì)象的完整...
    時(shí)待吾閱讀 11,177評(píng)論 0 24
  • R語(yǔ)言正式開(kāi)始 一、數(shù)據(jù)類(lèi)型重點(diǎn)掌握 重點(diǎn)掌握向量和數(shù)據(jù)框 二、讀取本地?cái)?shù)據(jù) read.table函數(shù)要重點(diǎn)掌握 ...
    xiaofan1991閱讀 235評(píng)論 0 1
  • 我的故鄉(xiāng) 記憶中的一張底片 細(xì)雨灑過(guò) 高樓拖著長(zhǎng)長(zhǎng)的淚痕 在把麥地思念 樓里的人們 慶幸自己望得更遠(yuǎn) 能憑窗遠(yuǎn)眺天邊
    子夜的風(fēng)2閱讀 279評(píng)論 1 6

友情鏈接更多精彩內(nèi)容