Node.js 无法解压缩存储在nodejs中redis中的压缩数据&引用;Z“数据错误”;
我使用msgpack5对JSON对象进行编码,并使用zlib.gzip将其压缩并存储在节点redis列表中 代码如下:Node.js 无法解压缩存储在nodejs中redis中的压缩数据&引用;Z“数据错误”;,node.js,node-redis,Node.js,Node Redis,我使用msgpack5对JSON对象进行编码,并使用zlib.gzip将其压缩并存储在节点redis列表中 代码如下: zlib.gzip(msgpack.encode(data), function(err, compressedData) { if (err) { return callback(err); } var suffix = "fetch"; var listHead = userId + ":" + suffix; return redis.lpu
zlib.gzip(msgpack.encode(data), function(err, compressedData) {
if (err) {
return callback(err);
}
var suffix = "fetch";
var listHead = userId + ":" + suffix;
return redis.lpush(listHead, compressedData, callback);
});
这完全行得通。我使用:
lrange(listHead, 0, -1, function(err, values)
去拿名单
但以下代码不起作用:
compressedData = new Buffer(compressedData);
zlib.gunzip(compressedData, function(err, unzippedObj) {
if (err) {
return callback(err);
}
return callback(null, msgpack.decode(unzippedObj));
});
其中,CompressedData
是redis中列表的每个值
此代码生成:
{"errno":-3,"code":"Z_DATA_ERROR"}
当我在放入redis列表之前和之后记录压缩数据时,它输出相同的缓冲区。请帮助。我不确定
节点redis
是否正确,但在ioredis
中,您必须使用特殊方法获取缓冲区,如redis.getBuffer()
我正在将获取的字符串转换为缓冲区,然后尝试解压缩。这行不通,有什么解决办法吗?