将WebM文件存储在Redis(NodeJS)中
我正在寻找一个将WebM文件存储到Redis的解决scheme。
我们来解释一下情况:
- NodeJS服务器从客户端接收WebM文件,并将其保存到服务器文件系统中。
- 然后它必须保存在redis的这个文件,因为我不想pipe理redis和文件系统。 这样我可以用redis命令删除video。
我想用fs.readFile()读取文件,然后将其保存到一个缓冲区中,但我不知道如何使用编码格式,我不知道如何引用这个过程来将WebMvideo回送给客户端发出请求时。
这是继续进行的好方法吗? 任何build议?
PS:我使用强大的上传文件。
编辑:我find了一种方法来进行,但theres另一个问题:
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? 也许节点和Redis使用不同的编码?
find解决scheme 当您创build客户端对象时,问题就变成了。
通常这是做的
var client = redis.createClient();
而return_buffers
参数将被设置为false。
通过这种方式
var client = redis.createClient(6379, '127.0.0.1', { return_buffers: true, auth_pass: null });
一切正常! ;)
这是他们帮助我的问题页面
我不太了解NodeJS和WebM文件。
Redis存储C字符types的8位string,所以它应该是二进制友好的。 检查js代码和configuration,以确保您的js redis客户端发送/接收数据为bytearray而不是UTF-8string,可能是JS中的数据转换不正确。