DEV Community

Jun
Jun

Posted on Originally published at redisviewer.com

How I stopped Redis GUIs from freezing on 10M+ keys

Service Monitoring

Production Redis with tens of millions of keys. Open a GUI → freeze, RAM spike, or crash. Open a large hash/zset → the same freeze if the client tries to load every member at once.

I hit this enough times that I rebuilt the loading path. The result is RedisViewer, a local Redis desktop client built first for developers: load the keys you asked for, keep the UI virtualized, and confirm before touching large production databases.

Loading vs rendering

Memory usage

Most Redis GUIs mix two problems together: how keys are fetched, and how every row is painted.

RedisViewer splits them:

  • Load what you asked for. Via ScanConfig (default pattern *), it uses Redis SCAN and loads the full target key set. That is the R&D-friendly path — see the whole filtered result without endless "load more."
  • Confirm on large DBs. If DBSIZE ≥ 100,000 (configurable; "SCAN skip confirm"), it asks before loading.
  • Never render what you can't see. The key list is virtualized, so a large result set does not mean millions of UI nodes.

Large hashes / sets / zsets are separate: members load in chunks, so a fat collection does not freeze the window with one full dump.

Core bet: smooth browsing on huge instances, without a huge memory bill — full target load for debugging, safety gate for production-sized DBs, virtualized UI either way.

Value debugging for Java stacks

If you run Java services, Redis values are often not plain strings:

  • Java JDK serialization — open serialized objects without a one-off decoder
    Java value viewer

  • Escape / control characters — see and edit translated/escaped bytes visually
    Escape characters

  • Jackson / Fastjson polymorphic JSON — inspect and edit structured polymorphic JSON
    Jackson / Fastjson polymorphic JSON

Performance analysis in one local workflow

  • SlowLog — find slow commands
  • BigKey — locate oversized keys when memory climbs
  • HotKey — short MONITOR sampling for hot keys / high-frequency commands
  • MONITOR — live command stream for short diagnostics
  • Command stats — separate business load from monitor/connection noise

Start from CPU, memory, commands, or cache-hit trends, then drill down — without shipping Redis data to a hosted dashboard.

Local-first, free, cross-platform

Credentials stay local (encrypted); optional WebDAV sync is for connection profiles only. Keys and values are not uploaded.

Free. Windows / macOS / Linux.

👉 https://redisviewer.com


Feedback welcome: What usually kills your current GUI first — key list, large collections, or memory?

Top comments (0)