2014-10-18 41 views
3

我曾经使用PostgreSQL序列SELECT nextval('number');来确保我得到一个新号码,即使有多个客户端,因为nextval保证返回不同的和增加的值。Redis INCR和多进程?

我想在Redis中使用相同的机制。 我以为使用INCR命令,但我想确保我很清楚它会给出与nextval命令相同的保证吗? 当几个进程运行此命令或者我必须使用Redis锁时,没有获得相同编号的风险吗?

由于

+2

[Redis INCR并发性]的可能重复(http://stackoverflow.com/questions/16672355/redis-incr-concurrency) – 2014-10-18 15:42:50

回答

5

Redis是一个单线程发动机,因此,所有命令的执行串行化。它总是为每个单独的命令提供原子性和隔离性(就ACID而言)。

结果是应用单个INCR命令并利用其结果是安全的(即使多个连接同时进行)。

+0

谢谢。基于此,我添加了一个与使用INCR有关的新问题,但是有一个每日计数器:http://stackoverflow.com/questions/26443804/redis-reset-counter-every-day – Michael 2014-10-18 19:45:13