我曾经使用 PostgreSQL 序列 SELECT nextval('number');
来确保我得到一个新号码,即使有多个客户端也是如此,因为 nextval
保证返回不同且递增的值。
我想对 Redis 使用相同的机制。
我想使用 INCR
命令,但我想确保我很好地理解它会提供与 nextval
命令相同的保证?
当多个进程运行此命令或我必须使用 Redis 锁时,是否没有获得相同数字的风险?
谢谢
最佳答案
Redis是单线程引擎,所以所有命令的执行都是序列化的。它始终为每个单独的命令提供原子性和隔离(在 ACID 的意义上)。
结果是应用单个 INCR 命令并利用其结果是安全的(即使多个连接同时执行)。
关于Redis INCR 和多进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26441410/