Подтвердить что ты не робот

Redis & Node.js: все ключи

Основной вопрос: используя Node.js Я хотел бы получить все ключи в моем redis db. Мой redis db выглядит так, когда я вызываю ключи *;

  • AXF
  • x9U
  • Лок

Итак, у каждой записи есть уникальный ключ, созданный как случайная строка. Теперь я хотел бы назвать что-то вроде foreach (ключ в Redis) и получить все ключи в redis. Можно ли выполнить запрос "SELECT * FROM Redis" как с помощью Node.js & Redis

4b9b3361

Ответ 1

Конечно, вам нужно установить модуль redis для nodejs, который можно найти в https://github.com/mranney/node_redis.

npm install node_redis

Обновление

Вышеприведенная команда больше не доступна. вы можете использовать следующее:

npm install redis

Тогда вы бы сделали:

var redis = require('redis'),
    client = redis.createClient();

client.keys('*', function (err, keys) {
  if (err) return console.log(err);

  for(var i = 0, len = keys.length; i < len; i++) {
    console.log(keys[i]);
  }
});        

Вообще говоря, вы не захотите всегда возвращать все ключи (производительность будет плохой для больших наборов данных), но это будет работать, если вы просто проверяете ситуацию. В документации redis есть даже хорошее предупреждение:

Внимание: рассмотрите KEYS как команду, которая должна использоваться только в производственных средах с особой осторожностью. Это может испортить производительность когда он выполняется против больших баз данных. Эта команда предназначена для отладки и специальных операций, таких как изменение вашего ключа раскладка. Не используйте KEYS в вашем обычном коде приложения. Если вы ищет способ поиска ключей в подмножестве вашего ключевого пространства, рассмотрите используя наборы.

Ответ 2

Установить клиент Redis для nodejs

npm install redis

Затем я делаю следующее, чтобы получить все ключевые данные

var redis =   require('redis'),
    client =  redis.createClient();

client.multi()
    .keys('*', function (err, replies) {
        // NOTE: code in this callback is NOT atomic
        // this only happens after the the .exec call finishes.

        console.log("MULTI got " + replies.length + " replies");

        replies.forEach(function (reply, index) {
            console.log("Reply " + index + ": " + reply.toString());
            client.get(reply, function(err, data){
                    console.log(data);
            });
        });

    })
    .exec(function (err, replies) {});

Ответ 3

npm install node_redis 

теперь недоступен. Вместо этого используйте

npm install redis