Redis INCR并发

spa*_*man 3 concurrency block blocking redis

我正在使用Redis' INCR为对象生成ID.然后使用ZADDID作为键添加对象.

我是否需要担心是否有多个连接执行同一个代码块?说后id:12,如果两个连接在同一时间连接,并添加都使用对象id:13,然后其中一人将失去.

Jon*_*org 9

由于redis是单线程的,因此永远不会发生这种情况 - 一次只有一个客户端可以对数据库进行更改.


Eli*_*Eli 7

正如 Jonatan Hedborg 所说,Redis 是单线程的,所以你永远不需要担心两个客户端同时做某事。另一方面,如果您担心要按顺序运行 INCR 和 ZADD 命令,并希望确保在它们之间没有运行其他命令,则可以使用事务,并确保您的命令作为单个单元,中间没有任何内容。