gpt4 book ai didi

node.js - 从redis key nodejs弹出值的原子操作

转载 作者:IT王子 更新时间:2023-10-29 06:10:35 31 4
gpt4 key购买 nike

我有一个 nodejs 应用程序和 redis 服务器。该应用程序正在使用 redis client.lpush 进行推送,而我实际需要的是一种从 redis 中弹出对象范围并以原子方式迭代它弹出的对象的方法。有多个客户端针对集群运行,我希望它们读取更新的 key 。

最佳答案

从redis 3.2开始你可以检查

最终解决方案:

通过在多操作中使用 lrange 和 ltrim,应该确保两者以原子方式执行,并且两者之间没有中断。在下面的示例中,有一个在给定键上使用 multi 的用法,而 count 表示要迭代的对象数。它返回第一个(最旧的)n 个对象(通过使用 lrange 和给定的计数),然后将它们从 redis 中删除(根据给定的计数使用 trim)。

static multiExecutionRedis (key, count){
return new Promise((resolve, reject) => {
console.log("running multi execution in the client");
let client = Reporter.cache;
let multi = client.multi();
multi.lrange(key, (count * -1), -1)
.ltrim(key, 0, (++count) * -1)
.exec((error, data) => {
if (error) {
console.log(error);
reject(error);
} else {
console.log("returning valid data");
resolve(data[0]);
}
});
});

对于redis > 4.0,你可以在这里查看https://github.com/RedisLabsModules/redex#rxlists

关于node.js - 从redis key nodejs弹出值的原子操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54507117/

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