Why Is Redis Slowing Down? 7 Common Latency Culprits and How to Fix Them
This article examines the typical reasons Redis latency spikes—such as high‑complexity commands, big keys, concentrated expirations, memory limits, fork overhead, CPU binding, AOF settings, swap usage, and network saturation—and provides practical diagnostics and mitigation steps to keep Redis responsive.
High‑Complexity Commands
Check the slowlog for commands that exceed the latency threshold (e.g., CONFIG SET slowlog-log-slower-than 5000 and CONFIG SET slowlog-max-len 1000). Commands with O(n) complexity like SORT, SUNION, or ZUNIONSTORE on large data sets can cause noticeable delays.
Big Keys
Large keys increase memory allocation and release time. Use redis-cli --bigkeys -i 0.01 to scan key size distribution, but limit scan frequency to avoid QPS spikes.
Concentrated Expirations
Mass expirations at fixed times trigger active expiration cycles, adding up to 25 ms of latency that isn’t recorded in the slowlog. Randomize expiration times (e.g., redis.expireat(key, expire_time + random(300))) to spread the load.
Memory Limit & Eviction
When maxmemory is reached, Redis evicts keys according to policies such as allkeys-lru or volatile-lru. Evicting large keys or using random eviction can reduce eviction‑induced latency.
Fork Overhead
RDB/AOF persistence and initial replica sync use fork, copying page tables and consuming CPU. Monitor latest_fork_usec via INFO to detect long fork times, and schedule backups on replicas during low‑traffic periods.
CPU Binding
Binding Redis to specific CPUs causes the forked child to compete for the same cores, worsening latency during persistence. Avoid CPU pinning when using RDB/AOF.
AOF Configuration
Choose appendfsync everysec for a balance between durability and performance; always incurs high I/O, while no risks data loss.
Swap Usage
When Redis memory is swapped out, access times rise to seconds. Monitor memory and swap, free up RAM, and restart instances (preferably after a master‑slave switchover) to clear swap.
Network Saturation
High network load can cause packet loss and added latency. Track NIC throughput, alert on high usage, and consider scaling or migrating instances if traffic exceeds capacity.
By understanding these factors—command complexity, key size, expiration patterns, memory limits, fork behavior, CPU affinity, AOF settings, swap, and network load—developers and DBAs can proactively tune Redis for low latency and high throughput.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Programmer DD
A tinkering programmer and author of "Spring Cloud Microservices in Action"
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
