2012-02-14 75 views
1

我们在我们的Redis架构中获得了非常有趣的Redis master比Redis slave有更多的命令

redis commands

  • 绿色:主
  • 蓝:从属

貌似主Redis的正在执行更35%命令从属Redis的

它并不总是相同的距离。

这里是日志活动的Redis服务器的一部分:

[26911] 14 Feb 13:28:44 - DB 0: 2399 keys (417 volatile) in 16384 slots HT. 
[26911] 14 Feb 13:28:44 - DB 1: 498 keys (498 volatile) in 1024 slots HT. 
[26911] 14 Feb 13:28:44 - DB 2: 1 keys (0 volatile) in 4 slots HT. 
[26911] 14 Feb 13:28:44 - 706 clients connected (1 slaves), 33794240 bytes in use 

,并在同一时间对药膏:

[17748] 14 Feb 13:28:44 - DB 0: 2398 keys (417 volatile) in 16384 slots HT. 
[17748] 14 Feb 13:28:44 - DB 1: 497 keys (497 volatile) in 1024 slots HT. 
[17748] 14 Feb 13:28:44 - DB 2: 1 keys (0 volatile) in 4 slots HT. 
[17748] 14 Feb 13:28:44 - 1 clients connected (0 slaves), 24839792 bytes in use 

所以他们看起来像他们几乎是1:1同步。

我们想知道这可能是造成这种差距的原因。此外,我们问自己是否意味着向Redis发送了可以优化的不必要的命令。

+1

我猜,任何读命令都不会传播到从属设备。你只写信给主人,并从奴隶读书?如果你正在读/写主人,而不是从奴隶读取,这将解释它。 – 2012-02-14 15:56:47

+0

哎!好点..你可以添加你的评论作为答案,以便人们(和我)可以把它变成正确的。 – fguillen 2012-02-14 16:43:25

+0

我已经添加它作为未来参考的答案。如果您满意,请接受它! :-) – 2012-02-14 22:12:04

回答

2

下面是一个可能的解释:total_commands_processed报告所有的命令,读取,写入和服务器相关的命令。只有写入命令会传播到从站。

在只写入主站并从从站读取的设置中,从站(所有读取+所有写入)上将有更高的total_commands_processed

如果您写入并从主服务器读取,并且只保留从服务器作为备份,或者保留到磁盘,主服务器将拥有更高的total_commands_processed

实际上,主从设备的编号为total_commands_processed的可能性不大。

+0

您在这里有一点意思!,我们总是_write/read_ always_to_to_master_server。如果没有人说别的,我会检查一下。 – fguillen 2012-02-15 12:51:40

+0

在这种情况下,自''(写入+读取)>写入''以后''master'确实会拥有更多'total_commands_processed'。 – 2012-02-15 12:58:52