如何从Redis信息中解释“ evicted_keys”

问题描述

我们将ElastiCache用于Redis,并对其evictions指标感到困惑。

我很好奇Redis Info的evicted_keys指标上的单位是什么? ElastiCache文档说这是一个计数:https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheMetrics.Redis.html,但是对于我们的应用程序,我们观察到“逐出”指标(从evicted_keys衍生)上下波动,表明它不是一个计数。我希望计数永远不会减少,因为我们不能“撤离”一把钥匙。我想知道evicted_keys是否真的是一个速率(例如逐出/秒),它可以解释为什么它会波动。

在此先感谢您的答复!

解决方法

来自INFO command

evicted_keys:由于maxmemory个限制而被收回的密钥数

要了解有关迁离的更多信息,请参见Using Redis as an LRU cache - Eviction policies

服务器启动时,此计数器为零,并且仅当您发出CONFIG RESETSTAT command时才会重置。但是,在ElastiCache上,此命令不可用。

也就是说,ElastiCache通过计算数据点之间的差异从该值得出度量标准。

Redis evicted_keys      0    5    12     18     22    ....
CloudWatch Evictions    0    5     7      6      4    ....

这是CloudWatch指标中的常用模式。这样,您可以在需要累积值的情况下使用SUM,而且还可以轻松检测速率变化或峰值。

例如,如果您希望在一分钟内驱逐超过10,000次,则要发出警报。如果ElastiCache将Redis的累积值直接存储为度量标准,将很难实现。

此外,通过仅在该时间段内将度量标准作为撤出的密钥来提交,就可以防止服务器重置或值溢出造成数据失真。尽管Redis INFO的值会恢复为零,但在ElastiCache上,您仍然可以获取该时间段的值,并且仍然可以在任何时间段进行求和。