一尘不染

node.js将对象存储在Redis中

redis

这就是事情-
我想在特定键下的redis中存储本机JS(node.js)对象(闪存套接字引用)。当我简单地做到这一点时,client.set()它存储为一个字符串。当我尝试获得价值时,我得到的[object Object]只是一个字符串。

有机会工作吗?这是我的代码:

  addSocket : function(sid, socket) {
    client.set(sid, socket);
  },

  getSocket : function(sid) {
    client.get(sid, function(err, reply) {
      // cant't get an object here. All I get is useless string
    });
  },

阅读 561

收藏
2020-06-20

共1个答案

一尘不染

下载者:这里的上下文是SET命令,可以存储任意对象。

不,你不能那样做。您应该接受以下事实:Redis将所有内容存储为字符串(毕竟,协议是基于文本的)。Redis可能会执行一些优化并将某些值转换为整数,但这是它的事,而不是您的事。

如果要在Redis中存储 任意 对象,请确保在保存之前对它们进行了序列化,并在检索后反序列化。

不过,我不确定是否可以使用套接字对象来实现。毕竟,它们仅描述系统资源(开放连接)(例如TCP套接字)。如果您设法序列化描述并将其反序列化到另一台计算机上,则该另一台计算机将没有连接。

2020-06-20