incr命令自動加一是隻相對於這台機器而言還是相對於整個redis集群?
比如我一開始隻有1台機器。有一個參數是count,這台機器的count達到了10000。
然後我增加了一台redis機器。
很顯然,我的初衷是我再來取count的時候是從10000開始的。也就是說,整個變量對整個redis集群而言是唯一的。
此外,redis的主從同步大概要花多長時間?(就是立即同步那種,數據隻存在內存中間)
ringa_lee2017-04-22 09:02:09
你需要叢集中的機器保持資料一致性,前提是有主備關係。
你在A機器上對一個變數a做incr操作到10000,其他機器是不會去更新你這個值的,除非在集群中你這台機器是master,而其他機器都是你這台機器的slave,這樣其他機器會去把它自己的a值更新到10000;
增加機器也一樣,增加的機器如果是你這台機器的slave,那麼它會更新a的值。從10000開始。
黄舟2017-04-22 09:02:09
你看過redis叢集的實作與配置嗎? redis自己的叢集實作像是三台機器ABC,A裡有了key:"A_KEY",那麼操作叢集去get set不論在哪台(ABC)機器去執行,拿到都是A裡的key:"A_KEY" ,所以你的這個問題的答案是沒問題的。
但你提到了增加機器,上面的答案是建立在假設你作為用戶操作都沒有錯誤的情況下,增加機器就要把之前分到ABC3台機器的分量改成ABCD4台機器,所以這裡面有一些要操作的東西。