// redis, valkey & friends

A Redis GUI for Mac, Windows and Linux

Open any key and edit it with the exact command shown before it runs. Type commands with completion drawn from the server’s own documentation. Connect to a cluster behind a bastion or a Sentinel group by master name, and watch the server live with tools that always have a cap and a stop. SQLly is a native app where Redis, Valkey, KeyDB and DragonflyDB sit next to your SQL databases - and it is honest about what it does not do yet.

macOS (Apple Silicon, signed and notarized), with Windows and Linux as a supported beta. No account required.

Keys you can read, page and edit

Double-click a key in the explorer and it opens in the key view instead of a bare query result. The header strip shows its type, TTL, encoding, memory and length; the value loads in pages of 1,000 fields, elements, members or entries with a showing N of M count and Load more; strings longer than 1 MB load in 1 MB windows.

Screenshot to comeredis-key-view-hash-edit.webp β€” the key view on a hash: header strip, a paged grid of fields, and the Add field form showing the exact HSET above Run
The key view on a hash: the header strip, the paged value, and the HSET it will run, shown before you press Run.

Edits for every type

Set a string while keeping its expiry (KEEPTTL is ticked by default), add, edit and delete hash fields, set, push and remove list elements, add and remove set members, add, re-score and remove sorted-set members, and replace a JSON document. Each form shows the command as you type, and nothing runs until Run.

Key view β†’

Streams and consumer groups

A stream gets Entries, Groups, Consumers and Pending tabs: lag per group, idle time per consumer, and every unacknowledged entry with its owner and delivery count. Append, delete, acknowledge, claim, auto-claim, trim, and create or destroy groups - trimming and destroying ask you to type the count or the group name first.

Streams β†’

Values decoded, bytes untouched

The value viewer shows a value as UTF-8, JSON, hex, MessagePack, Base64 or Protobuf, decompresses gzip, zstd, LZ4 and deflate, and summarises PHP, Java and Python pickle payloads. Auto names what it found. The choice is remembered per key, and the stored bytes never change.

Value formats β†’

Rename, copy and export

Rename… refuses to overwrite unless you allow it. Copy to Database… and Copy to Connection… carry the value and remaining expiry. Export as Command File… writes a folder as commands that Import Command File… runs back, binary values included, byte for byte.

Rename, copy and export β†’
Screenshot to comeredis-streams-pending-dead-consumer.webp β€” a stream’s Pending tab for the workers group, two entries held by consumer “dead” with growing idle milliseconds, and the Auto-claim form showing the exact XAUTOCLAIM
The Pending tab makes a dead consumer obvious; Auto-claim hands its entries to a live one, with the command shown first.

The key browser walks keys with a bounded SCAN, folds them by prefix, and one note row says exactly how much of a long listing you are seeing - with Scan more to continue where it stopped. Key filters are remembered per database, and numbered databases can carry names (db3 β€” sessions) and be hidden when you never use them.

Commands, with completion that knows the server

A query tab runs one command per line in redis-cli syntax, and every reply lands as a sortable, exportable result set. On connect SQLly reads the server’s own COMMAND DOCS, so Redis Stack modules, Valkey’s additions and modules you loaded yourself complete too; a bundled Redis 7.4 snapshot covers servers that refuse or predate it.

ZRANGE leaderboard 0 -1 WITHSCORES
HGETALL user:42
FT.SEARCH idx:products "@title:lamp" LIMIT 0 10
TS.RANGE sensor:7:temp - +
  • Options that still fit. After SET k v EX 10 the list no longer offers KEEPTTL; container commands such as XINFO offer their subcommands.
  • Key names you already scanned. Keys the explorer listed for the tab’s database are offered in key positions with their type - typing never walks the server.
  • A safety verdict on hover. The card shows the syntax, complexity and a Write, Destructive or Blocking badge, so you know what a line does before you run it.
Screenshot to comeredis-intellisense-zrange-options.webp β€” a Redis query tab on the Stack fixture with the completion popup after ZRANGE k 0 -1 offering BYSCORE, BYLEX, REV, LIMIT and WITHSCORES, and the signature help above the line
Completion after ZRANGE offers only the options that fit, with the full syntax above the line.

Redis Stack replies as tables

FT.SEARCH returns one row per document with a column per field, FT.AGGREGATE one row per group, and TS.RANGE a timestamp column that opens straight onto the Chart tab. JSON, Bloom, cuckoo, top-k, count-min, geo, stream-info and latency commands get the columns their replies imply.

Redis Stack modules β†’

A Search index browser

On a server with the search module, each database gains an Indexes folder: document count, key type and prefixes per index, with Query…, Explain…, Profile… and a reviewed Drop Index…. There is no index-creation wizard or saved-query library yet.

Index browser β†’

Command IntelliSense in detail

Signature help follows the argument you are on, Esc hides it for the line, and F2 on the popup sends an IntelliSense report as it does in SQL tabs. The SQL formatter and SQL validation stay off for Redis.

Command IntelliSense β†’

Connections: single server, Cluster, Sentinel, Azure

Every connection SQLly opens uses RESP3 when the server offers it, names itself after your saved connection so you can spot it in CLIENT LIST, and gives up on a command that gets no reply within the query timeout (30 seconds unless you set one) instead of leaving the tab waiting. Nothing is ever re-run for you.

Redis Cluster, with a node map

List one or more seed nodes and every command goes to the node that owns its slot, with MOVED and ASK followed automatically. A Cluster node map rewrites announced addresses you cannot dial, each node gets its own SSH forward, and Cluster Topology… traces every node step by step.

Cluster and Sentinel β†’

Sentinel by master name

Name the master and list the sentinels; SQLly asks them for the current master on every connect. Prefer replica for reads sends read-only scripts to a healthy replica, and after a failover a read carries on while a write stops with master changed, re-run.

Sentinel β†’

Microsoft Entra for Azure Redis

Azure Cache for Redis and Azure Managed Redis connections can sign in with the Azure account your Azure SQL connections use, and are signed in again with a fresh token before the old one expires - on Sentinel and Cluster connections too.

Entra sign-in β†’

TLS, SSH and a step-by-step test

Four TLS modes with a CA file, client certificates, and an option to trust your computer’s certificate store. SSH tunnels send a keepalive after 30 seconds of silence and reopen after a drop. Test Connection logs each step - lookup, tunnel, TCP, TLS, sign-in, protocol, database, cluster - and names the one that failed.

Connection diagnostics β†’
Screenshot to comeredis-cluster-topology-trace.webp β€” Cluster Topology on the 7100–7105 cluster fixture: three masters and three replicas with slots, health and dialed addresses, the footer confirming all 16,384 slots covered, and the Trace rows for one node
Cluster Topology lists every node with the address it announces and the one SQLly dials; Trace tests each node the way Test Connection does.

Operations: watch it live, clean it up

The live tools open their own connection and always have a cap and a stop, so leaving one open cannot fill your memory or tie up the connection your queries use.

Profiler

A MONITOR capture on a dedicated connection, with a row cap, a time box (five minutes by default, one hour at most), filters by command, client or text, and a counter of dropped entries. On a cluster it runs on every master with a node column.

Profiler β†’

Pub/Sub and key events

Subscribe to channels and patterns, sharded channels with a leading #, or press Key events to watch every key change on a database with event and key columns. When notifications are off, the tab offers a reviewed CONFIG SET notify-keyspace-events KEA.

Pub/Sub viewer β†’

Memory analyzer

Memory by data type, the 25 largest keys by MEMORY USAGE, and the TTL distribution, from one bounded sample - with a line that says whether the figures are exact or extrapolated, and a Stop that keeps the previous reports on screen.

Memory analyzer β†’

Bulk actions

Delete keys or set and remove expiries by pattern after a stoppable dry-run count; a delete asks you to type the count. Import Command File checks every line first, lists failures by line number, and asks for RUN ALL before destructive commands.

Bulk actions β†’

Slow log

The Activity Monitor’s Expensive Queries tab is SLOWLOG GET with the slowlog-log-slower-than threshold shown above it, changed through a reviewed CONFIG SET and persisted with a reviewed CONFIG REWRITE.

Slow log β†’

ACL page and database names

Tools › Security… lists every ACL user with its rules and selectors beside the recent access denials; Add, Edit and Delete script a reviewed ACL SETUSER with passwords as hashes. Name logical databases and choose which ones the explorer shows.

ACL users β†’
Screenshot to comeredis-pubsub-key-events.webp β€” the Pub/Sub tab on the standalone fixture after Key events with the key pattern user:*, rows showing event and key columns such as expired / user:42, and the notification setting read back as KEA
Key events fill their own event and key columns, so an expired user:42 reads as expired and user:42.

Safety that holds on production

The same guards apply in a query tab, the key view, the stream tabs, the key dialogs and the bulk tools, so there is no side door around them.

  • Read-only means read-only commands. With the SELECT-only lock on - and for every query the AI composes - only read-only commands such as GET, HGETALL, SCAN and INFO pass; everything that writes or administers is refused before it is sent. Read-only connections
  • Production locks. A production connection whose writes are locked refuses every edit and bulk write until you unlock it from the status-bar chip, and the lock is checked again when you confirm. Environments
  • Reviewed writes. Every edit shows its exact command first; where a query tab would confirm, the button becomes Confirm Run. FLUSHALL, FLUSHDB, DEL, CONFIG SET and SHUTDOWN go through the destructive-command confirmation. Confirmation
  • Blocking commands refused. SUBSCRIBE, MONITOR and a blocking pop with no timeout are refused in a query tab before they can hang it - the Pub/Sub viewer and Profiler do that work on their own connections.
  • Cluster rules named. On a cluster, multi-key commands across slots, SELECT of anything but 0, KEYS, SCAN and MULTI/EXEC are refused with a message naming the rule and the fix.

Compatible servers, and what differs on each

SQLly’s live Redis suites - the engine tests, the byte-exact round trips and the services test - were run against each server we could stand up locally. Where a server behaves differently, it is written down here rather than discovered later.

Redis-compatible servers and how SQLly works with each
Server Status
Redis 7 and Redis Stack Tested liveRedis 7.4.11, plain and TLS-only, and Redis Stack 7.4.7 with search, JSON, Bloom and time series loaded.
Valkey Tested liveValkey 8.1.10 passed every suite and is shown as Valkey. Sentinel and the ACL page work as on Redis; Stack module replies are shaped when the modules are loaded.
KeyDB Tested livePassed every suite. The image tested reports no KeyDB version, so it shows as Redis 6.3.4. No FUNCTION LIST, and no COMMAND DOCS, so completion uses the bundled command list.
DragonflyDB Tested livedf-v2.0.2 passed every suite and is shown as DragonflyDB. CLIENT LIST omits the user, there is no FUNCTION LIST, and it refuses notify-keyspace-events, so key events cannot be turned on. Its built-in JSON and Search replies are shaped.
Amazon ElastiCache Not tested liveRedis or Valkey; in-transit encryption means TLS Require or Verify full, and cluster mode works through the configuration endpoint. AWS manages its users, so the ACL page is not offered, and Stack modules are not available there.
Amazon MemoryDB Not tested liveAlways a cluster and always TLS; the ACL user name goes in the Username field. The ACL page is not offered; JSON and search replies are shaped and the Indexes folder appears when FT._LIST answers.
Azure Cache for Redis, Azure Managed Redis Not tested liveAccess key or Microsoft Entra sign-in, verified against a scripted sign-in and a local Redis standing in for the cache. The Profiler and the Pub/Sub viewer’s RESP2 fallback cannot re-authenticate mid-capture, so on Entra they end when their token expires.

Versions are the ones each server reported in INFO server on 19 October 2026. More detail on the forks: Valkey, KeyDB and DragonflyDB in SQLly.

Moving from Redis Insight

In Redis Insight, select your databases and choose Export (include passwords if you want them carried over). In SQLly, right-click the connection list and choose Import From Other Tools…. Plain and base64 exports both work.

  • TLS is never dropped. Certificates and keys are saved as files only you can read; a database that verified its server imports as Verify CA.
  • Passwords go to your keychain, not into the saved connections file. Delete the export afterwards - it holds them in clear text.
  • Cluster, Sentinel and Entra come over as such: Redis Cluster connections, Sentinel connections with the master group and sentinel password, and Microsoft Entra sign-in for Azure databases.

Redis Insight is free and goes deeper than SQLly in places - vector-set editing, a Search workspace that creates indexes, historical analysis reports. The side-by-side comparison says where each one wins.

Reported cases we tested against

These issues from Redis Insight’s public tracker shaped what we tested. Some are old and some are fixed; check the tracker for where each one stands today.

  • #6269: a hash value 00014 treated as a number. SQLly keeps values as bytes on every read path.
  • #6019: a cloud import that lost TLS and ended in read ECONNRESET. SQLly’s importer always keeps TLS.
  • #6292: SSH tunnels dropping after idle. SQLly’s tunnels send keepalives and reopen after a drop.
  • #6537: a cluster through locally forwarded SSH ports failing with “Failed to refresh slots cache”. See the node map.
  • #6437: aliases for logical databases. SQLly lets you name them.
  • #5540: MessagePack timestamp decoding, fixed in Redis Insight 3.4.1. SQLly decodes standard timestamps as $timestamp.

Proof, not promises

A live test suite pushes the values a numeric coercion would mangle - 00014, the empty string, a NUL byte, invalid UTF-8 (0xff 0xfe), a 40-digit integer, 1e309, and 100 KB and 2 MB strings - through the command editor, the key browser, a hash read and the Pub/Sub viewer, and checks the same bytes come back as text, never as a number. It passed on Redis 7, Redis Stack, Valkey, KeyDB, DragonflyDB and a TLS-only server. Pub/Sub payloads are kept byte-exact up to the viewer’s 64 KiB stored cap, and longer ones are marked truncated with their full size.

Timings on one million keys

SQLly tool timings on a one-million-key Redis database
Path Result Time
Key browser, default limit10,000 rows, walk marked incomplete0.069 s
Key browser, nothing matches (full keyspace walk)0 rows, cursor back to 00.342 s
Bulk dry run25,001 rows, the cap reported0.133 s
Memory analyzer, default sample1,000 of 1,000,000 keys sampled0.009 s
Memory analyzer, top keys on the default sample25 rows0.009 s
Memory analyzer, maximum sample50,000 keys sampled0.436 s
Memory analyzer, top keys on the maximum sample25 rows0.502 s
Logical database list with memory16 rows, one database at 1,000,000 keys0.006 s

Measured on 19 October 2026 on an Apple Silicon Mac against Redis 7.4.11 in a local container, over loopback, with 1,000,000 keys of 20-byte values (used_memory_human 86.54M). A remote server adds a network round trip per SCAN page (1,000 keys) and per MEMORY USAGE batch (200 keys), so multiply by your round-trip time. Every path caps and says so.

Questions about SQLly for Redis

Is there a native Redis GUI for Mac, Windows and Linux?

Yes. SQLly is one native app, written in Rust and drawn on the GPU, with no embedded browser. The macOS build is signed and notarized for Apple Silicon; Windows and Linux are a supported beta. Redis sits beside SQL Server, PostgreSQL, MySQL and the other engines SQLly connects to, in the same window.

Can I edit Redis keys without typing commands?

Yes. Double-click a key and the key view shows its type, TTL, encoding, memory and length, pages the value 1,000 entries at a time, and offers the edits its type allows: strings, hashes, lists, sets, sorted sets and JSON documents, plus stream entries and consumer groups. Every edit shows the exact command before it runs. There is no vector-set editor yet.

Does SQLly turn values like 00014 into numbers?

No. Values travel as bytes from the server to the grid and back, so 00014, a 40-digit integer or 1e309 stay exactly as stored, and a value that is not valid text is shown and edited as hex. A live test suite checks this on every read path against Redis 7, Redis Stack, Valkey, KeyDB, DragonflyDB and a TLS-only server.

Does SQLly work with Redis Cluster and Sentinel?

Yes. Cluster connections route every command to the node that owns its slot, follow MOVED and ASK redirects, and can rewrite announced node addresses with a node map; each node gets its own SSH forward. Sentinel connections find the current master by name, can send read-only scripts to a replica, and never re-run a write after a failover.

Does SQLly support Valkey, KeyDB and DragonflyDB?

Yes. Valkey 8, KeyDB and DragonflyDB passed SQLly's live Redis suites. A few commands differ by server: KeyDB has no COMMAND DOCS, so completion uses the bundled Redis 7.4 command list, and DragonflyDB refuses notify-keyspace-events, so the Pub/Sub viewer cannot turn key events on there.

Can I sign in to Azure Cache for Redis with Microsoft Entra?

Yes. Choose Microsoft Entra on a Redis connection to an Azure Redis host and SQLly signs in with a token from your signed-in Azure account, renewing it before it expires. It has been verified against a scripted sign-in and a local Redis standing in for the cache, not yet against a live Azure Managed Redis instance.

Can I move my databases over from Redis Insight?

Yes. Export your databases from Redis Insight, then choose Import From Other Tools in SQLly. Each database becomes a Redis connection with its host, port, logical database, user, SSH tunnel and TLS settings; TLS is never dropped, passwords go to your system keychain, and cluster and Sentinel databases come over as Cluster and Sentinel connections.

Is SQLly free?

SQLly has a free tier for hobbyists that caps saved servers at two and is not available inside organizations with more than 100 employees; everyone else uses a SQLly 1.x or Lifetime license. The pricing page lists what each one includes.

// try it on your own redis

Bring your keys home to the pig

Free to start on macOS, Windows and Linux, no account required. Paste a redis:// URL and go.