Использование redis и node.js проблема - Redis_client.hget всегда возвращает false - PullRequest
1 голос
/ 16 января 2020

Я запускаю простое веб-приложение, поддерживаемое node.js, и пытаюсь использовать redis для хранения некоторых пар ключей Json, и он сохраняет данные в redis, когда я проверяю это на " redis-cli"консоль. Но когда я пытаюсь извлечь данные, он всегда возвращает ложное событие без ошибок.

Все, что я делаю, это запускаю «индекс узла. js» в командной строке, и вот первые несколько строк моего индекса. js:

const getRedisClient = () => {
  client = redis.createClient(REDIS["PORT"], REDIS["HOST"]);
  client.on("error", function(err) {
    console.log("Redis Error " + err);
  });
  return client;
}

const getPostByLocalDbPath = (local_db_path, user_id) => {
  try {
    let client = getRedisClient();
    console.log("---- cache keys -----");
    console.log(user_id, local_db_path);
    let data = client.hget(user_id, local_db_path, function (err, obj) {
      if(err) {
        return null;
      }
      return obj;
    });
    console.log("--- cache data ---", data);
    return data;
  } catch (err) {
    console.log("--- cache get exception ---", err);
    return {};
  }
}

Когда я вызываю метод "getPostByLocalDbPath", он возвращает ложь вместо данных, которые я хранил в кэше redis.

Когда я запускаю

HGET 87 bdre2eb7-38b3-11e9-b66 c -0af14c44c62s

на консоли redis-cli, после чего я вижу данные по этому ключу

1 Ответ

0 голосов
/ 21 января 2020

Вы можете использовать Promisify:

var redis = require("redis");

const getRedisClient = () => {
  cl = redis.createClient();
  cl.on("error", function(err) {
    console.log("Redis Error " + err);
  });
  return cl;
}

let client = getRedisClient();
const {promisify} = require('util');
const hgetAsync = promisify(client.hget).bind(client);

async function getPostByLocalDbPath(local_db_path, user_id){
    console.log("---- cache keys -----");
    console.log(user_id, local_db_path);
    let data = await hgetAsync(user_id, local_db_path);
    console.log("--- cache data ---", data);
    return data;
}

getPostByLocalDbPath('bdre2eb7-38b3-11e9-b66c-0af14c44c62s', '87').then(
    val=>console.log(val)
);
...