Skip to content

go.redis.missing_ttl

Scalability High

Detects Redis SET operations without TTL.

Redis keys without TTL:

  • Memory growth — Keys accumulate indefinitely
  • OOM risk — Redis runs out of memory
  • Stale data — Old values never expire
// ❌ Before (no TTL)
err := client.Set(ctx, "user:123", userData, 0).Err()
// ✅ After (with TTL)
err := client.Set(ctx, "user:123", userData, 24*time.Hour).Err()
// ✅ Alternative (SetEX for explicit expiration)
err := client.SetEx(ctx, "session:abc", sessionData, 30*time.Minute).Err()
  • Set with duration 0 (no expiry)
  • Missing expiration on cache keys
  • SetNX without subsequent Expire

Unfault can add TTL parameters to Redis SET operations.