我正在使用Redis'INCR
为对象生成ID。然后使用ZADD
使用ID作为密钥添加对象。
我是否需要担心是否有多个连接执行同一个代码块?如果两个连接同时连接并且都使用id:12
添加对象,请在id:13
之后说,然后其中一个将丢失。
答案 0 :(得分:8)
由于redis是单线程的,因此永远不会发生这种情况 - 一次只有一个客户端可以对数据库进行更改。
答案 1 :(得分:3)
正如Jonatan Hedborg所说,Redis是单线程的,所以你永远不必担心两个客户同时做某事。另一方面,如果您担心要继续运行INCR和ZADD命令,并且想要确保它们之间没有运行其他命令,则可以使用transactions,并保证您的命令作为一个单元运行,两者之间没有任何内容。