有条件地用 redis 执行一个动作

时间:2021-07-03 19:39:12

标签: node.js redis node-redis

我想创建一个将键(字符串)作为输入的函数。如果key存在于缓存中,函数将返回true,否则将key添加到缓存中并返回false。我对 redis 很陌生,所以我感谢所有帮助。

const redis = require('redis');
const client = redis.createClient();

const lookup = (key) => {
client.get(key, (err, reply) => {
if(err) return err;
if(reply !== null) return true;
if(reply === null) {
  client.set(key, 1);
  return false;
} 

}) }

const key = 'key';
const doesKeyExist = lookup(key);
console.log(doesKeyExist);

1 个答案:

答案 0 :(得分:0)

由于 node-redis 不支持 promises,你需要给你的函数传递一个回调,或者看看如何使用 util.promisify

没有 util.promisify 的解决方案:

const redis = require('redis');
const client = redis.createClient();

const lookup = (key, callback) => {
  client.get(key, (err, reply) => {
    if(err) callback(err, null);
    if(reply !== null) callback(null, true);
    if(reply === null) {
      client.set(key, 1);
      callback(null, false);
    })
}

const key = 'key';
lookup(key, (err, doesKeyExist) => {
  console.log(doesKeyExist);
});