当内存被填满时,使用 Volatile-LRU maxmemory 策略的 Redis 缓存会发生什么?

What happens in Redis cache with Volatile-LRU maxmemory policy when memory get filled?

我在 Azure 中有一个 redis 缓存,最大内存策略设置为 Volatile-LRU。写入 Redis 时,我没有为密钥添加到期时间。在这种情况下,当缓存内存被填满时会发生什么?

根据 volatile-lru 政策,redis 永远不会驱逐没有过期的密钥。如果所有内存都被未设置过期的键用完,那么下次您使用需要分配比可用内存更多的命令时,比如 SET,该命令将失败,您将收到此错误消息:

OOM command not allowed when used memory > 'maxmemory'

您仍然可以使用不分配内存的命令,例如 GET。如果你让你的数据库进入这种状态,你可以使用 EXPIRE 命令来设置密钥的到期时间。