在Redis中存储WebM文件(NodeJS)

时间:2013-12-11 10:13:44

标签: node.js redis webm

我正在搜索将WebM文件存储到Redis中的解决方案。

让我们解释一下情况:

  • NodeJS服务器从客户端接收WebM文件,并将其保存到服务器文件系统中。
  • 然后它必须将此文件保存在redis中,因为我也不想管理redis和文件系统。通过这种方式,我可以使用redis命令删除视频。

我想用fs.readFile()读取文件,然后将其保存到Buffer中,但我不知道要使用的编码格式,我不知道如何引用这个过程来回馈WebM视频发送给客户提出请求。

这是一个很好的方法吗?有什么建议吗?

PS:我使用强大的上传文件。


编辑:我找到了继续进行的方法,但还有另一个问题:

var file = fs.readFileSync("./video.webm");
client.set("video1", file1, function(){
    client.get("video1", function(err, data) {
        var buffer = new Buffer(data, 'binary');
        // file ≠ buffer
    });
});

这是编码问题吗?像unicode / UTF8 / ASCII? 也许node和redis使用不同的编码?

2 个答案:

答案 0 :(得分:1)

找到解决方案! 当您创建客户端对象时,问题就出现了。

通常这就是做什么

 var client = redis.createClient(); 

并且return_buffers param将被设置为false。

以这种方式

var client = redis.createClient(6379, '127.0.0.1', {
    return_buffers: true,
    auth_pass: null
});
一切都好了! ;)

这是the issue page他们帮助我

答案 1 :(得分:0)

我对NodeJS和WebM文件了解不多。

Redis在8位字符串上存储C char类型,因此它应该是二进制友好的。检查js代码和配置,以确保您的js redis客户端以bytearray而不是UTF-8字符串发送/接收数据,可能是JS中的数据转换不良。