Why is Redis slow?
When Redis feels slow, the single-threaded event loop is usually blocked or thrashing — eviction under maxmemory, an oversized key, or an expensive command in SLOWLOG. Baltan ranks that cause from read-only telemetry so you can fix the right thing first.
Redis high latency: the usual production causes
Memory near maxmemory triggers synchronous eviction on the write path. Latency climbs while evicted_keys and cache misses rise together — a memory pressure spiral.
Large keys (hashes, lists, sorted sets) make a single HGETALL, SMEMBERS, or unbounded LRANGE stall every other client on that instance.
KEYS, SORT, and hot slowlog commands dominate P99. Redis docs warn that KEYS in production is a common latency source — use SCAN instead.
Missing TTLs under volatile-* policies leave Redis with no eviction candidates, so writes fail or thrash the wrong data.
Client storms and blocked clients (BLPOP / transactions / Lua) can look like “Redis is slow” when the queue is full of waiting connections.
A 10-minute checklist before you blame the network
Check INFO memory: used_memory vs maxmemory, evicted_keys delta over a few minutes, and mem_fragmentation_ratio.
Read SLOWLOG GET: note command names (not just durations). KEYS, HGETALL, SMEMBERS, and wide LRANGE are smoking guns.
Sample largest keys with MEMORY USAGE / redis-cli --bigkeys (or a rate-limited SCAN) — names and sizes only.
Confirm TTL hygiene on cache/session namespaces. High “no expiry” share plus volatile-* policy is a classic trap.
On ElastiCache / managed Redis, correlate EngineCPUUtilization, Evictions, and CacheHitRate in CloudWatch with the same window as app P99.
What not to do when Redis is slow
Do not leave MONITOR running on a production primary — Redis must stream every command; official benchmarks show throughput can drop by more than 50%.
Do not run KEYS * on a large keyspace. Prefer rate-limited SCAN and SLOWLOG / latency tooling.
Do not open port 6379 to a SaaS GUI “just to look around” if you only need diagnosis. Prefer a private read-only sidecar.
Do not scale replicas hoping to fix primary CPU saturation from a single big key or KEYS — reads may help, but the hot command still hurts the primary.
How Baltan diagnoses “why is Redis slow?”
A Docker agent beside Redis samples INFO, MEMORY, SLOWLOG, clients, and bounded SCAN (names and sizes only — never values).
You get an explainable health score, ranked findings, and a “Why is Redis slow?” answer that cites Baltan evidence only.
Port 6379 stays private. Telemetry leaves over HTTPS; payloads and AUTH stay with you.
FAQ
Is Redis slow because of the network?
Sometimes — but production P99 spikes more often come from eviction thrash, big keys, or expensive commands on Redis’s single thread. Check SLOWLOG and memory before chasing network first.
How do I find why Redis P99 is high?
Compare memory pressure (evictions, used vs maxmemory), SLOWLOG command names, and oversized keys. Baltan ranks those signals into one cause instead of leaving you with raw INFO.
Should I use MONITOR to debug latency?
No for standing production use. MONITOR can cut throughput by ~50% and streams arguments. Prefer SLOWLOG, latency tools, and a read-only agent.