Redis 在某些操作系统上将字符串保存为缓冲区,而不是其他操作系统上的缓冲区?

2024-01-22

我在 Ubuntu 11.10 上使用带有 Node 的 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> ]

为什么它以字符串形式输入,以缓冲区形式输出? 缓冲区使调试变得非常困难!

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

更新:在 CentOS 5.7 上没有指定编码的情况下它也可以正常工作。这是 Ubuntu 特有的吗?有系统范围的修复吗?


See: http://nodejs.org/docs/v0.3.1/api/buffers.html http://nodejs.org/docs/v0.3.1/api/buffers.html

纯 Javascript 对 Unicode 友好,但对二进制数据不友好。什么时候 处理 TCP 流或文件系统时,需要处理 八位字节流。 Node 有多种策略用于操作、创建、 并消耗八位字节流。

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

Buffer 对象是全局的。

在 Buffers 和 JavaScript 字符串对象之间进行转换需要 显式编码方法。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redis 在某些操作系统上将字符串保存为缓冲区,而不是其他操作系统上的缓冲区? 的相关文章

随机推荐