我正在使用 RedisINCR
为对象生成 ID。然后使用ZADD
ID 作为键来添加对象。
我是否需要担心是否有多个连接在执行同一代码块?说id:12
如果两个连接同时连接并且都使用添加对象id:13
,那么其中一个将丢失。
我正在使用 RedisINCR
为对象生成 ID。然后使用ZADD
ID 作为键来添加对象。
我是否需要担心是否有多个连接在执行同一代码块?说id:12
如果两个连接同时连接并且都使用添加对象id:13
,那么其中一个将丢失。
由于 redis 是单线程的,这永远不会发生 - 一次只有一个客户端可以对数据库进行更改。
正如 Jonatan Hedborg 所说,Redis 是单线程的,所以你永远不必担心两个客户端同时做某事。另一方面,如果您担心要按顺序运行 INCR 和 ZADD 命令,并希望确保在它们之间没有运行其他命令,则可以使用transactions并保证您的命令作为一个单元,中间没有任何东西。