Хранить файл WebM в Redis (NodeJS)

Я ищу решение для сохранения файла WebM в Redis.

Давайте объясним ситуацию:

  • Сервер NodeJS получает файл WebM от клиента и сохраняет его в файловой системе сервера.
  • Затем он должен сохранить этот файл в Redis, потому что я не хочу управлять Redis и файловой системой тоже. Таким образом, я могу удалить видео только с помощью команды redis.

Я думаю прочитать файл с помощью fs.readFile(), а затем сохранить его в буфере, но я не знаю, какой формат кодирования использовать, и я не знаю, как передать этот процесс, чтобы вернуть видео 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? Может, узел и редис используют разные кодировки?

2 ответа

Решение найдено! Проблема стала при создании объекта client.

Обычно это то, что делается

 var client = redis.createClient(); 

А также return_buffers Параметр будет установлен как ложный.

В этом случае

var client = redis.createClient(6379, '127.0.0.1', {
    return_buffers: true,
    auth_pass: null
});

все прошло правильно!;)

это страница вопроса, они помогают мне

Я не знаю много о файлах NodeJS и WebM.

Redis хранит тип C char на 8-битной строке, поэтому он должен быть дружественным к двоичным файлам. Проверьте код и конфигурацию js, чтобы убедиться, что ваш клиент js redis отправляет / получает данные в виде байтового массива, а не в виде строки UTF-8, возможно, в JS данных произошла неправильная конвертация.

Другие вопросы по тегам