Redis INCR并发

时间:2013-05-21 14:18:44

标签: concurrency redis block blocking

我正在使用Redis'INCR为对象生成ID。然后使用ZADD使用ID作为密钥添加对象。

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

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:3)

正如Jonatan Hedborg所说,Redis是单线程的,所以你永远不必担心两个客户同时做某事。另一方面,如果您担心要继续运行I​​NCR和ZADD命令,并且想要确保它们之间没有运行其他命令,则可以使用transactions,并保证您的命令作为一个单元运行,两者之间没有任何内容。