node.js - Node Redis - 使用 EX 和 NX 设置?

标签 node.js locking redis

Redis 推荐使用带有可选参数的 SET 作为锁定机制的方法。 IE。 SET lock 1 EX 10 NX 仅当锁不存在时才会设置锁,并且会在 10 秒后过期。

我正在使用 Node Redis,它有一个 set() 方法,但我不知道如何将附加参数传递给它以使 key 过期并且如果它已经被创建则不被创建存在,或者即使有可能。

也许我必须使用 setnx()expire() 作为单独的调用?

最佳答案

阅读 Node Redis 源代码后,我发现所有方法都接受任意数量的参数。当产生参数数量不正确的错误时,这是​​由 Redis 而不是 Node 模块产生的。

我早期尝试提供多个参数是因为我只安装了 Redis 2.2.x,其中 SET 只接受 2.6.12 的 NX 和 EX 参数。

所以在安装了 Redis 2.6.12 后,以下方法调用将与 node redis 一起使用,如果它不存在,则设置一个变量,并将其设置为 5 分钟后过期:

$client->set('hello', 'world', 'NX', 'EX', 300, function(err, reply) {...});
$client->set(['hello', 'world', 'NX', 'EX', 300], function(err, reply) {...});

关于node.js - Node Redis - 使用 EX 和 NX 设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15861424/

相关文章:

c++ - 使用 boost::lock_guard 进行简单的共享数据锁定

winapi - 在什么情况下系统进程 (PID 4) 会保留打开的文件句柄?

synchronization - 无锁和非阻塞有什么区别?

redis - Redis 用于复制的临时文件的位置?

.net - 插值字符串 $ 被视为无效字符并返回错误 BC30037 (vb.net)

go - 使用 Go redis 客户端 (Redigo)

node.js - 如何从 node.js 缓冲区获取 int

node.js - Jenkins 需要很长时间才能完成一些构建?

javascript - js中如何插入换行符?

javascript - NestJS - 如何将 RoleGuard 与 JWT 结合使用?