Skip to content

davidbudnick/redis-tui

Repository files navigation

Redis TUI Manager

CI Release Coverage: 100% License: MIT

A feature-rich terminal UI for managing Redis databases, built with Go and Bubble Tea. Browse, edit, and monitor your Redis keys without leaving the terminal.

Main Screenshot

Quick Install

# Native install — recommended (macOS and Linux)
curl -fsSL https://raw.githubusercontent.com/davidbudnick/redis-tui/main/install.sh | bash

# Homebrew (macOS and Linux)
brew tap davidbudnick/homebrew-tap
brew install --cask redis-tui

# Go (requires Go 1.26+)
go install github.com/davidbudnick/redis-tui@latest

Pre-built binariesDownload from GitHub Releases

Screenshots

Key Browser with Preview

Main

Live Metrics Dashboard

Metrics

Features

Browsing and Editing

  • Key browser with pattern filtering, regex, and fuzzy search
  • All data types — strings, lists, sets, sorted sets, hashes, streams, JSON (RedisJSON), HyperLogLog, bitmaps, and geospatial
  • Inline value editor for editing string and JSON values
  • Tree view for hierarchical key navigation
  • Favorites and recent keys for quick access
  • Key templates for creating keys from predefined structures
  • Value history — view and restore previous values
  • JSON syntax highlighting

Connections and Security

  • CLI quick connect — pass --host, --port, --user, --password, etc. to connect without a config file
  • Connection manager — save and switch between multiple Redis instances
  • TLS/SSL encryption support
  • SSH tunneling for secure remote access
  • Connection groups to organize instances
  • Database switching between Redis databases (0-15)
  • Cluster support — connect to any cluster node and press K to view all nodes, their roles (master/replica), slot ranges, and link state; cluster metrics in the live dashboard

Monitoring and Operations

  • Live metrics dashboard — real-time ops/sec, memory, CPU, network I/O, hit rate, and client count with scrolling ASCII charts; cluster node count display
  • Server info — version, mode, OS, uptime, memory, and connected clients
  • Memory stats — detailed usage breakdown and top keys by memory consumption
  • Slow log — view slow query entries with execution time and command details
  • Client list — view all connected Redis clients with address, age, and command info
  • Watch mode — monitor key values for changes in real-time with configurable interval
  • Keyspace events — subscribe to keyspace notifications (set, del, expire, etc.)
  • Export/Import — JSON-based key backup and restore
  • Bulk operations — pattern-based delete and batch TTL across multiple keys
  • Redis config — browse and edit runtime CONFIG parameters
  • Pub/Sub — browse active channels with subscriber counts and publish messages
  • Lua scripting — execute Lua scripts directly against the server
  • Themes — switch between color themes

Installation

Native Install (Recommended)

The install script auto-detects your OS and architecture, downloads the latest release, verifies the checksum, and installs the binary to ~/.local/bin (override with INSTALL_DIR):

curl -fsSL https://raw.githubusercontent.com/davidbudnick/redis-tui/main/install.sh | bash

# Custom install directory
INSTALL_DIR=/usr/local/bin curl -fsSL https://raw.githubusercontent.com/davidbudnick/redis-tui/main/install.sh | bash

Homebrew

See Quick Install above.

From Source

# Clone the repository
git clone https://github.com/davidbudnick/redis-tui.git
cd redis-tui

# Build
make build

# Install to GOPATH/bin
make install

Pre-built Binaries

Download the latest release from the Releases page. Pre-built binaries are available for macOS, Linux, and Windows with no Go installation required.

Using Go Install

Note: Requires Go 1.26 or later.

go install github.com/davidbudnick/redis-tui@latest

Usage

# Launch the interactive connection manager
redis-tui

# Quick connect to a Redis server
redis-tui --host localhost

# Connect with password and specific database
redis-tui -h redis.example.com -p 6380 -a mypassword -n 2

# Connect to a cluster node
redis-tui --host redis.example.com --port 6380 --cluster

# Connect with TLS
redis-tui --host redis.example.com --tls --tls-ca /path/to/ca.pem

# Update to the latest version
redis-tui --update

When --host is provided the TUI connects automatically on startup. Without flags the interactive connection manager is shown.

Press ? inside the app to view the full help screen.

CLI Flags

Flag Short Description Default
--host -h Redis server hostname
--port -p Redis server port 6379
--password -a Redis password
--db -n Database number (0-15) 0
--user Redis username (For ACL enabled servers)
--name Connection display name host:port
--cluster Enable cluster mode false
--tls Enable TLS/SSL false
--tls-cert TLS client certificate file
--tls-key TLS client private key file
--tls-ca TLS CA certificate file
--tls-skip-verify Skip TLS certificate verification false
--scan-size Redis SCAN COUNT hint (batch size for key scanning) 1000
--include-types Fetch key types during scan (set false to skip) true
--version Print version and exit
--update Update to the latest version

Short flags (-h, -p, -a, -n) follow redis-cli conventions.

Uninstall

# Native install
rm -f ~/.local/bin/redis-tui

# Homebrew
brew uninstall --cask redis-tui

# Go
rm -f $(go env GOPATH)/bin/redis-tui
Keyboard Shortcuts

Global

Key Action Key Action
q Quit / Go back Ctrl+U/D Page up/down
? Show help g/G Go to top/bottom
j/k Navigate up/down home/end Go to top/bottom
Ctrl+C Force quit

Connections Screen

Key Action Key Action
Enter Connect to selected d/delete/backspace Delete connection
a/n Add new connection r Refresh list
e Edit connection Ctrl+T Test connection

Keys Screen

Key Action Key Action
Enter View key details O View logs
a/n Add new key B Bulk delete
d/delete/backspace Delete key T Batch set TTL
r Refresh keys F View favorites
l Load more keys W Tree view
/ Filter by pattern Ctrl+R Regex search
s/S Sort / Toggle direction Ctrl+F Fuzzy search
v Search by value Ctrl+H Recent keys
e Export to JSON Ctrl+L Client list
I Import from JSON Ctrl+E Toggle keyspace events
i Server info Ctrl+X View expiring keys
D Switch database m Live metrics dashboard
f Flush database M Memory stats
p Pub/Sub channels C Cluster info
L View slow log K Compare keys
E Execute Lua script P Key templates
Ctrl+G Redis config

Key Detail Screen

Key Action Key Action
e Edit value (string/json) r Refresh value
a Add to collection f Toggle favorite
x Remove from collection w Watch for changes
t Set TTL h View value history
R Rename key y Copy to clipboard
c Copy key J JSON path query
d/delete Delete key j/k Navigate collection items
esc/backspace Go back to keys list

Docker Compose Examples

Need a Redis instance to try redis-tui? Docker Compose files are included under examples/.

# Standalone Redis on port 6379
docker compose -f examples/standalone/docker-compose.yml up -d
redis-tui -h localhost

# 6-node cluster (3 masters + 3 replicas) on ports 6380-6385
docker compose -f examples/cluster/docker-compose.yml up -d
redis-tui -h localhost -p 6380 --cluster

# Standalone Redis Stack (RedisJSON, RediSearch, etc.) on port 6390
docker compose -f examples/standalone-redis-stack/docker-compose.yml up -d
redis-tui -h localhost -p 6390

# Redis Stack cluster on ports 6386-6392
docker compose -f examples/cluster-redis-stack/docker-compose.yml up -d
redis-tui -h localhost -p 6386 --cluster

The Makefile also exposes shortcuts for these (make docker-up-standalone, make docker-up-cluster, make docker-up-standalone-stack, make docker-up-cluster-stack) along with matching docker-down-* and docker-seed-* targets.

Configuration

Configuration is stored in ~/.config/redis-tui/config.json.

Example Configuration

{
  "connections": [
    {
      "id": 1,
      "name": "Standalone",
      "host": "localhost",
      "port": 6379,
      "username": "default",
      "db": 0,
      "created_at": "2025-01-01T00:00:00Z",
      "updated_at": "2025-01-01T00:00:00Z"
    },
    {
      "id": 2,
      "name": "Cluster",
      "host": "localhost",
      "port": 6380,
      "db": 0,
      "use_cluster": true,
      "created_at": "2025-01-01T00:00:00Z",
      "updated_at": "2025-01-01T00:00:00Z"
    }
  ],
  "groups": [
    {
      "name": "local",
      "color": "#50fa7b",
      "connections": [1, 2]
    }
  ],
  "favorites": [
    {
      "connection_id": 1,
      "connection": "Standalone",
      "key": "app:config",
      "label": "App Settings",
      "added_at": "2025-01-15T10:30:00Z"
    }
  ],
  "recent_keys": [
    {
      "connection_id": 1,
      "key": "session:abc123",
      "type": "hash",
      "accessed_at": "2025-01-20T14:00:00Z"
    }
  ],
  "templates": [
    {
      "name": "Session",
      "description": "User session data",
      "key_pattern": "session:{user_id}",
      "type": "hash",
      "default_ttl": 86400000000000,
      "fields": {
        "token": "",
        "created_at": "",
        "user_agent": ""
      }
    },
    {
      "name": "Cache",
      "description": "Cached data with TTL",
      "key_pattern": "cache:{resource}:{id}",
      "type": "string",
      "default_ttl": 3600000000000
    },
    {
      "name": "Rate Limit",
      "description": "Rate limiting counter",
      "key_pattern": "ratelimit:{ip}:{endpoint}",
      "type": "string",
      "default_ttl": 60000000000,
      "default_value": "0"
    },
    {
      "name": "Queue",
      "description": "Job queue",
      "key_pattern": "queue:{name}",
      "type": "list"
    },
    {
      "name": "Leaderboard",
      "description": "Sorted leaderboard",
      "key_pattern": "leaderboard:{game}",
      "type": "zset"
    }
  ],
  "tree_separator": ":",
  "max_recent_keys": 20,
  "max_value_history": 50,
  "watch_interval_ms": 1000
}

Note: Passwords and SSH passphrases are never saved to the config file. They are stripped before serialization for security. The config file is written with 0600 permissions (owner read/write only).

TTL format: default_ttl values in templates use Go's time.Duration nanosecond encoding: 1s = 1000000000, 1m = 60000000000, 1h = 3600000000000.

Connection Options

Option Description
name Display name for the connection
host Redis server hostname or IP
port Redis server port (default: 6379)
password Redis password (never saved to disk)
db Redis database number (0-15)
username Redis ACL username (optional)
group Connection group name (optional)
color Display color for the connection (optional)
use_tls Enable TLS/SSL connection
tls_config.cert_file Client certificate file path
tls_config.key_file Client key file path
tls_config.ca_file CA certificate file path
tls_config.insecure_skip_verify Skip TLS certificate verification
tls_config.server_name TLS server name for verification
use_ssh Enable SSH tunneling
ssh_config.host SSH server hostname
ssh_config.port SSH server port
ssh_config.user SSH username
ssh_config.password SSH password (never saved to disk)
ssh_config.private_key_path Path to SSH private key file
ssh_config.passphrase Passphrase for encrypted private key (never saved to disk)
use_cluster Enable Redis cluster mode

Requirements

  • Go 1.26 or later (for building from source or go install)
  • A terminal that supports 256 colors
  • Redis server 4.0 or later

Supported Platforms

  • macOS (Intel and Apple Silicon)
  • Linux (amd64, arm64)
  • Windows (amd64)

Development

# Install development dependencies
make dev-deps

# Run the application
make run

# Run tests
make test

# Run tests with coverage
make test-cover

# Run linter
make lint

# Format code
make fmt

# Build the application
make build

# Build for all platforms
make build-all

# Clean build artifacts
make clean

# Create a release with goreleaser
make release

# Create a snapshot release (no publish)
make snapshot

License

MIT License - see LICENSE for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Run tests before committing: go test -v -race ./...
  4. Commit your changes using conventional commits (feat:, fix:, refactor:, etc.)
  5. Push to the branch (git push origin feature/amazing-feature)
  6. Open a Pull Request

Before submitting

  • All tests must pass with the race detector: go test -v -race ./...
  • Run make lint and make fmt
  • Never suppress errors in tests — every error return must be checked
  • Config changes must include persistence round-trip tests (add data, reload from disk, assert fields survived)
  • See CLAUDE.md for code conventions, architecture, and guardrails

Acknowledgments

Keywords

redis, redis-cli, redis-client, redis-tui, redis-gui, redis-manager, terminal, tui, cli, go, golang, database, key-value, cache, devops, sysadmin

About

Redis TUI Manager

Resources

License

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages