节点redis - id生成竞争条件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了节点redis - id生成竞争条件相关的知识,希望对你有一定的参考价值。
多个进程可以访问我的redis商店。添加新用户哈希时,我执行以下步骤:
- incr userId
- 设置用户:[递增的userId] ...
如何将这些步骤捆绑到事务中?
const client = require('redis').createClient();
client.on("connect", () => {
const multi = client.multi();
multi.incr("userId", (userId) => {
console.log("new userId is %s", userId); // TODO userId should not be null
multi.set("user:"+userId, {name:"UserName"} );
});
multi.exec(); // TODO after the execution I expect to see the key user:null using redis-cli, but it does not exist
});
答案
您不能在同一事务中使用对事务的操作的回复,但在您的情况下也不需要 - INCR
操作是原子操作并保证返回无竞争的唯一值。
以上是关于节点redis - id生成竞争条件的主要内容,如果未能解决你的问题,请参考以下文章