我在 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(使用前将#替换为@)