诊断驱逐、过期和 OOM 错误
Redis内存命令
INFO stats
# Fields to check: evicted_keys, expired_keys, expired_stale_perc, keyspace_hits, keyspace_misses, total_eviction_exceeded_time (7.0+)
INFO keyspace
CONFIG GET maxmemory
CONFIG GET maxmemory-policy
INFO memory
# The value that triggers eviction: used_memory - mem_not_counted_for_evict, compared with maxmemory作用
显示被淘汰和已过期的 key 数量、缓存命中率、带 TTL 的 key 的占比,以及触发淘汰的内存值相对于 maxmemory 的情况。
适用场景
应用收到 'OOM command not allowed when used memory > maxmemory'、缓存命中率下降,或反映 key 意外消失时。
注意
使用 noeviction 策略时,达到 maxmemory 后写命令会收到 OOM 错误,而读取仍可正常进行。使用 volatile-* 策略时,没有 TTL 的 key 永远不会被淘汰;若不存在带 TTL 的 key,其行为与 noeviction 相同(检查 INFO keyspace 中的 expires)。不要把 maxmemory 设得太接近物理内存:要为复制缓冲区和 fork 期间的写时复制留出空间。