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

在代码角度来讲,无论是session,还是socket,在nodejs中,均表示为一个对象,所以我一直想的是,把session、socket对象序列化存储在redis或其它数据库中,用到对象时,再将数据反序列化成对象(实际就是这些对象持久化后,就不在内存里保存这些信息,就能减少内存开销),是的,你们没看错,我真的是这样想的。

所以在写代码时,就会出现问题。比如:用socket.io的时候,尝试用querystring.stringify(socket)去进行序列化,得到的结果是:

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

很显然,这个是可以存储到redis中的,但是从redis里取出数据通过querystring.parse()反序列,但是显然不能当作socket用(我没测试)。所以到这里,我觉得持久化不是指这样的操作。

那么持久化应该是什么?

session好说,nodejs,用的koa-session2库,session对对象就是存储的一些用户信息的object,所以直接序列化放redis,用的时候就反序列化好了。

socket我认为序列化的应该是socket id这类的信息(还有一些用户),如果需要实现点对点聊天,就不用在内存里额外保存socket id,通过redis进行查询获取。不然反序列化整个对象,进行信息发送时,从那个地方获取tcp连接通道传送信息呢?

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,141评论 1 32
  • https://nodejs.org/api/documentation.html 工具模块 Assert 测试 ...
    KeKeMars阅读 6,396评论 0 6
  • JAVA序列化机制的深入研究 对象序列化的最主要的用处就是在传递,和保存对象(object)的时候,保证对象的完整...
    时待吾阅读 10,913评论 0 24
  • R语言正式开始 一、数据类型重点掌握 重点掌握向量和数据框 二、读取本地数据 read.table函数要重点掌握 ...
    xiaofan1991阅读 223评论 0 1
  • 我的故乡 记忆中的一张底片 细雨洒过 高楼拖着长长的泪痕 在把麦地思念 楼里的人们 庆幸自己望得更远 能凭窗远眺天边
    子夜的风2阅读 254评论 1 6