Architecture Redis键正在融化,无法相加

Architecture Redis键正在融化,无法相加,architecture,redis,docker,google-compute-engine,Architecture,Redis,Docker,Google Compute Engine,我有3个Node/Redis/Mongo堆栈,每个堆栈发送相同的写入流 架构上的差异是: A: all hosted locally on OSX B: using standardized Docker images on boot2docker C: using the same Docker images on GCE (Google Compute Engine) 仅关注Redis一秒钟,我就在恒定负载下得到了以下结果(30次写入/秒,每次写入在Redis中产生70次操作) 大约60秒

我有3个Node/Redis/Mongo堆栈,每个堆栈发送相同的写入流

架构上的差异是:

A: all hosted locally on OSX
B: using standardized Docker images on boot2docker
C: using the same Docker images on GCE (Google Compute Engine)
仅关注Redis一秒钟,我就在恒定负载下得到了以下结果(30次写入/秒,每次写入在Redis中产生70次操作)

大约60秒后,我在Redis中找到了约150000把钥匙。 在那之前,一切看起来都很好。。。但在那之后。。。一切似乎都融化了!这是Redis在KEY_X上读取的内容的快照,它每12秒过期一次,除非更新(在这种情况下,我给它另外12秒的生存时间)

我希望每个堆栈的#总密钥是相同的——我实际上是将完全相同的数据流到每个堆栈。我不知道为什么钥匙会融化?我最好的猜测是它和过期时间和Redis过载有关


任何帮助或想法都很好…

所有Redis实例的配置是否相同(Redis.conf)?如果是,maxmemory是否设置为0?如果是这样,A、B和C是否具有相同数量的RAM和相同的体系结构?记住,当Redis到达maxmemory(主题外:主题中的词汇选择非常好)时,根据配置的策略,可以收回密钥。感谢您的响应。我使用的是B和C的默认配置,以及A中OSX的默认配置。我在A和B上有16GB的RAM(B通过boot2Docker运行),C在一台有60GB RAM的机器上运行。我不太熟悉.config设置-如果我不想让Redis让任何东西过期。。。我应该将maxmemory设置为0吗?零意味着无限,在大多数情况下,当内存不足时,操作系统会杀死Redis。我会使用真正的价值(即使在开发中)。然后,您需要验证maxmemory_策略是否设置为“无”。通过编辑conf文件或CONFIG SET并重写,使用INFO()或CONFIG Get-change获取设置。此设置意味着,一旦数据到达maxmemory,您将开始从Redis中获取内存不足错误,直到某些数据在12秒后被删除或过期。
Stack A: "full/expected" in KEY_X, # total keys = 398K
Stack B: "partial" data in KEY_X, # total keys = 483K
Stack C: KEY_X doesn't exist at all anymore, # total keys = 386K