当前位置: 首页 > 面试题库 >

Redis将字符串保存为某些OS上的缓冲区,而不是其他OS?

房项禹
2023-03-14
问题内容

我在Ubuntu 11.10上使用带有节点的Redis 2.2.11,并且保存了一个字符串,但该字符串作为缓冲区返回。

    id = 1234;
    console.log('data', data);
    client.hmset("user:" + id, "name", data['name'] );
    client.hmget('user:' + id, "name", function(err, d) {
        console.log('data retrieved', d);
    });

这将在控制台上产生以下内容:

data { name: 'RealServer' }
data retrieved [ <Buffer 41 6e 6e 61 52 65 61 6c 53 65 72 76 65 72> ]

为什么它以字符串形式进入并以Buffer形式出现?缓冲区使调试非常困难!

在我的本地设置(带有Redis 2.2.14的MacOS 10.6)上,检索到的数据打印为字符串,就好了。我想找到一个在两个系统上都可以继续使用的解决方案。

更新:如果没有在CentOS 5.7上指定编码,它也可以正常工作。这是Ubuntu特有的吗?是否有系统范围的修复程序


问题答案:

请参阅:http :
//nodejs.org/docs/v0.3.1/api/buffers.html

纯Javascript对Unicode友好,但对二进制数据不利。处理TCP流或文件系统时,必须处理八位位组流。Node有几种用于操纵,创建和使用八位字节流的策略。

原始数据存储在Buffer类的实例中。缓冲区类似于整数数组,但对应于V8堆外部的原始内存分配。缓冲区无法调整大小。

Buffer对象是全局的。

在缓冲区和JavaScript字符串对象之间进行转换需要一种显式的编码方法。

由于未指定编码,因此默认情况下它将显示为原始数据。您可以buffer.toString用来生成标准的JS字符串。



 类似资料:
  • 我想将pandas数据帧保存为csv文件,问题是要将np.array转换为字符串。 我想将数组保存为数组,但在文档中找不到任何有用的内容。 解数独=[123345894324321321](整数列表) n_splits=3(整数) 最终结果应该是: [123 345 894 324 321 321] 1,[123 345 894 324 321 321] 3,[123 345 894 324 32

  • 问题内容: 我正在尝试读取(位于Javascript源的同一文件夹中)的内容,并使用以下代码显示它: 的内容创建于: 测试Node.js readFile() 我得到这个: 问题答案: 从文档: 如果未指定编码,则返回原始缓冲区。 这可能解释了。指定一个有效的编码,例如作为文件名之后的第二个参数。如,

  • 问题内容: 我想使用node.js进行HTTP请求以从Web服务器加载一些文本。由于响应可能包含很多文本(有些兆字节),因此我想分别处理每个文本块。我可以使用以下代码来实现: 这似乎没有问题。但是我想支持HTTP压缩,所以我使用zlib: 这可以是像多字节字符的问题,其由两个字节组成:和。如果第一个字节被第一个块()覆盖,第二个字节被第二个块覆盖,则将在文本块的结尾/开头产生不正确的字符。如何避免

  • 我使用DocumentBuilderFactory创建XML文件,如下所示:如何在Java中创建具有特定结构的XML文件。 我想将结果存储为java字符串,而不是将其保存到文件中。如何实现这一点。 重复:如何转换组织。w3c。多姆。文档对象到字符串?

  • 我有这个。我想创建一个,它保存如下 但是通过这样做 问题是每个现在都保存为。例如,第3行是 对于那些怀疑论者,我尝试了,它是。第2列工作正常。 如何保存为每行,而不是?也就是说,我如何保存所有行的作为而不是?

  • 协议缓冲区说它可以包含任何任意的字节序列。但是如果我的数据包含“\0”,协议缓冲区如何从字符串变量对我的整个数据进行编码。