2014-10-18 40 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