Volatile With No TTLs

A Redis cache starts refusing writes. On-call collects this:

127.0.0.1:6379> CONFIG GET maxmemory maxmemory-policy
1) "maxmemory"
2) "8589934592"
3) "maxmemory-policy"
4) "volatile-lru"

127.0.0.1:6379> INFO stats
keyspace_hits:41882301
keyspace_misses:1120044
evicted_keys:0
expired_keys:0

127.0.0.1:6379> SET session:9f1c "..."
(error) OOM command not allowed when used memory > 'maxmemory'.

Reads still work. Why is evicted_keys zero at the memory limit?

A

volatile-lru evicts lazily on read, and this workload is write-heavy

B

No key in the keyspace has an expiration set, and a volatile-* policy with no candidates behaves exactly like noeviction

C

maxmemory-samples is too low, so the sampling pass keeps missing eligible keys

D

Replication and AOF buffers are counted toward maxmemory, so eviction cannot bring usage back below the limit