我曾经使用PostgreSQL序列SELECT nextval('number');
来确保我得到一个新的数字,即使有几个客户端,因为nextval
保证返回不同的和增加的值。
我想在Redis中使用相同的机制。
我想使用INCR
命令,但我想确保我很清楚它会提供与nextval
命令相同的保证吗?
当多个进程运行此命令或我是否必须使用Redis锁时,没有获得相同数字的风险?
由于
答案 0 :(得分:6)
Redis是一个单线程引擎,因此所有命令的执行都是序列化的。它总是为每个单独的命令提供原子性和隔离(在ACID意义上)。
结果是应用单个INCR命令并利用其结果是安全的(即使多个连接同时执行)。