我们在 Azure 标准 2.5gb
上有一个 Redis 缓存。我们观察到以下行为:
我们时不时地会观察到内存使用量大幅下降。看来很多资源正在被驱逐。
注意事项:
- 驱逐政策为 LRU
- 可用缓存大小为 2.5GB
- 没有应用程序代码会收回如此大量的内存(最大的对象约为 80kb,大多数都小得多)
- 观察到的内存下降代表数万个键
- 我们很少对缓存对象使用明确的到期日期,即使这样做,它们也总是 < 1 小时。
我的问题是,除了应用程序逻辑显式驱逐 key 之外,Redis 是否还有其他情况会驱逐大量 key ?
最佳答案
内存清理可能不代表驱逐。
你说“看起来”很多资源正在被驱逐,但如果你只是依靠回收的内存来实现这种外观,那么你可能是在追鬼。您是否检查过此图表如何与 Azure 门户中提供的 Total Keys
指标重叠?叠加这两个系列应该可以让您了解内存回收是否确实是由于逐出所致,还是由于另一个进程(例如 Azure)可能调用 MEMORY PURGE定期在缓存实例上清理脏页?
关于azure - Redis 缓存 - 什么时候可以触发大规模驱逐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53597011/