gpt4 book ai didi

Node.js redis promisify 与 .multi 或 .batch

转载 作者:行者123 更新时间:2023-12-04 15:24:31 24 4
gpt4 key购买 nike

使用 npm 模块“redis”,我对单个命令使用 utils promisify 没有问题。

const { promisify } = require("util");
const redis = require("redis");
const client = redis.createClient();

const hmgetAsync = promisify(client.hmget).bind(client),

现在我希望能够使用 .multi 和 .batch 方法。

这是我的一个辅助函数的示例,它使用 .batch 而不使用 promisify 和非 promisify 版本的命令。

const getData = async (ids) => {
const batch = client.batch();

ids.forEach(id => {
batch.hgetall(id)
});

return new Promise((resolve, reject) => {
batch.exec((err, replies) => {
if (err) {
reject(err);
}

const data = replies
// missing keys require filtering
.filter(it => !!it)
.map(dataPoint => _toDataPoint(dataPoint));

resolve(data);
})
})
};

没问题,但我很好奇是否可以将 promisify 与 .multi 或 .batch 一起使用

非常感谢,

最佳答案

这是 multi 的 promisified 版本的示例,其中包含一组命令作为参数:

const { promisify } = require("util");
const redis = require("redis");
const client = redis.createClient();

const multiPromisified = commands => {
const multi = client.multi(commands);
return promisify(multi.exec).call(multi);
}

multiPromisified([['get', 'key1'], ['get', 'key2']]);

关于Node.js redis promisify 与 .multi 或 .batch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62562174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com