redis-tui

command module
v1.0.34 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 7, 2026 License: MIT Imports: 24 Imported by: 0

README

Redis TUI Manager

CI Release

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 editing with VIM keybindings for strings and collections
  • 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

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

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
examples
seed command
Command seed populates Redis instances started by the example docker-compose files with sample data covering every data type.
Command seed populates Redis instances started by the example docker-compose files with sample data covering every data type.
internal
cmd
Package cmd contains Bubble Tea commands for the Redis TUI.
Package cmd contains Bubble Tea commands for the Redis TUI.
db
service
Package service provides interfaces for dependency injection and testability.
Package service provides interfaces for dependency injection and testability.
testutil
Package testutil provides testing utilities and helpers for the redis-tui application.
Package testutil provides testing utilities and helpers for the redis-tui application.
types
Package types provides type definitions for the Redis CLI application.
Package types provides type definitions for the Redis CLI application.
ui
Package ui contains message handlers for the Redis TUI.
Package ui contains message handlers for the Redis TUI.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL