Javascript 无法从redis获取值
我正在尝试从redis获取一个我已经设置的值。当我调用checkCache函数时,我得到“CACHE:null”,然后它记录“无错误+数据”。我不明白为什么,因为我用等待Javascript 无法从redis获取值,javascript,node.js,caching,redis,Javascript,Node.js,Caching,Redis,我正在尝试从redis获取一个我已经设置的值。当我调用checkCache函数时,我得到“CACHE:null”,然后它记录“无错误+数据”。我不明白为什么,因为我用等待 const redis = require("redis"); const client = redis.createClient({ port : procces.env.PORT, host : procces.env.HOST, password : procces.
const redis = require("redis");
const client = redis.createClient({
port : procces.env.PORT,
host : procces.env.HOST,
password : procces.env.PASSWORD,
});
const checkCache = async (key) => {
await client.get(key, (err, data) => {
if(err) throw err;
console.log("NO ERROR + " + data);
if(data !== null) { return JSON.parse(data); }
});
return null;
};
我这样称呼这个方法:
const findAll = async(user) => {
const cache = await checkCache(user);
console.log('CACHE: ' + cache); // returns null
};
模块
redis
不支持承诺
为此,你必须承诺
const Promise = require('bluebird');
const redis = Promise.promisifyAll(require("redis"));
编辑:
我尝试了这个方法,但它仍然返回null,然后返回“无错误+数据”@r10lomo这是返回键的值。我已经试过上面的代码了。它是否像其他软件包一样不需要蓝鸟?我尝试了redisio,但无法编辑:很抱歉,我一开始没有看到getAsync。@r10lomo如果您不想使用bluebird,可以使用
promisifyAll=require('util-promisifyAll')
来promisify all
const Promise = require('bluebird');
const redis = Promise.promisifyAll(require("redis"));
const client = redis.createClient({
port : process.env.PORT,
host : process.env.HOST,
password : process.env.PASSWORD,
});
const checkCache = async (key) => {
const data = await client.getAsync(key);
console.log("NO ERROR + " + data);
if(data !== null) { return JSON.parse(data); }
return null;
};