gpt4 book ai didi

node.js - 使用redis维护一个循环的数列

转载 作者:可可西里 更新时间:2023-11-01 10:58:13 24 4
gpt4 key购买 nike

我需要生成不同的端口号在不同的进程中使用,所以我正在考虑使用redis来维护一个循环的数字列表,像这样:

function getNextPort(callback) {
var DEFAULT_PORT = 10245;
client.incr('next_port_incr', function(err, value) {
if (value > 200) {
client.del('next_port_incr');
}
var port = DEFAULT_PORT + value;
callback(port);
});
});

这样,每次我调用 getNextPort 时,我都可以获得一个新端口:10246、10247、10248,...并在 200 次后返回到 10246,这样端口就不会变得太大。

问题是,因为这个函数会同时被很多进程调用,我需要让它更原子吗?或者有更好的方法吗?

最佳答案

.incr.del 之间存在竞争条件。如果多个进程在当前值高于 200 时同时调用 .incr,那么您将以 DEFAULT_PORT + 200 以上的多个端口结束。这是一个问题吗?也许。取决于你到底在做什么。我猜你很好。

关于node.js - 使用redis维护一个循环的数列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35656967/

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