tabularis-redis-plugin-rust

March 5, 2026 · View on GitHub

A Redis plugin for Tabularis, the lightweight database management tool.

This plugin connects to Redis and exposes logical databases, metadata tables (Hash/RedisJSON row storage), and virtual key views — browse keys by prefix or type, inspect hashes, lists, sets, sorted sets, and streams, all through a SQL-like interface. Communication is JSON-RPC 2.0 over stdio.

Table of Contents

Features

  • Logical databases — exposes Redis databases 0-15 for selection in the connection form.
  • Metadata tables — store structured row data in Redis as Hash or RedisJSON; full SQL with WHERE, ORDER BY, LIMIT, aggregates, and GROUP BY.
  • Virtual key browser__redis_keys__ lists all keys with type, value preview, and TTL; key-pattern tables (__keys:prefix__) group keys by prefix automatically.
  • Type-specific tableshashes, lists, sets, zsets, and streams expose key contents by data structure.
  • Inline editing — insert, update, and delete records on both metadata and virtual key tables directly from the Tabularis data grid.
  • Full SQL on metadata — SELECT with AND/OR/IN/BETWEEN/LIKE, column aliases, INSERT/UPDATE/DELETE, CREATE INDEX, DROP TABLE via execute_query.
  • TLS support — optional TLS via rustls (no OpenSSL dependency).
  • Pipelined reads — type, value preview, and TTL fetched in batches to reduce round-trips.
  • Binary key support — non-UTF-8 keys exposed via key_raw (Base64) for lossless round-trip.
  • Pub/Sub visibility — list active channels and subscriber counts.
  • Server stats — parsed Redis INFO (version, memory, clients, keyspace) as structured JSON.
  • Cross-platform — pre-built binaries for Linux (x86_64, aarch64), macOS (x86_64, aarch64), and Windows (x86_64).

Connection

ParameterDescriptionDefault
HostRedis server host127.0.0.1
PortRedis port6379
DatabaseLogical database index (0-15)0
UsernameACL user (Redis 6+)default
PasswordAUTH password
TLStls: true or ssl_mode to connect over TLS (rediss://)off
Timeoutsconnect_timeout_ms, read_timeout_ms, write_timeout_ms5000, 10000, 10000

Installation

Automatic (via Tabularis)

If your version of Tabularis supports plugin management, the Redis plugin can be installed from the application (Settings → Available Plugins) when it is listed in the registry.

Manual Installation

  1. Download the latest release for your platform from the Releases page.
  2. Extract the archive.
  3. Copy tabularis-redis-plugin-rust (or tabularis-redis-plugin-rust.exe on Windows), manifest.json, and icon.svg into the Tabularis plugins directory:
  4. Restart Tabularis to load the plugin.
OSPlugins Directory
Linux~/.local/share/tabularis/plugins/redis-rust/
macOS~/Library/Application Support/com.debba.tabularis/plugins/redis-rust/
Windows%APPDATA%\com.debba.tabularis\plugins\redis-rust\

How It Works

The plugin is a standalone Rust binary that communicates with Tabularis through JSON-RPC 2.0 over stdio:

  1. Tabularis spawns the plugin as a child process.
  2. Requests are sent as newline-delimited JSON-RPC messages to the plugin's stdin.
  3. Responses are written to stdout in the same format.

One Redis connection is cached per session. Key discovery uses SCAN with pipelining to limit round-trips.

Supported Operations

MethodDescription
test_connectionPing Redis
get_databasesList logical databases (0-15)
get_schemasReturns empty (Redis has no schemas)
get_tablesList metadata tables, virtual key tables, and type-specific tables
get_columnsGet column metadata for a table
get_foreign_keysReturns empty
get_indexesGet indexes for metadata tables
get_pubsub_channelsList active Pub/Sub channels with subscriber counts
get_server_infoRedis INFO as structured JSON
execute_queryExecute SQL with pagination support
insert_recordInsert a row or create a Redis key
insert_records_batchBulk insert with pipelining
update_recordUpdate a row or key value/TTL
delete_recordDelete a row or Redis key
delete_records_batchBulk delete with pipelining
drop_tableDrop a metadata table and its data
get_schema_snapshotFull schema dump in one call
get_all_columns_batchAll columns for all tables
get_all_foreign_keys_batchAll foreign keys (empty for Redis)
get_create_table_sqlGenerate CREATE TABLE DDL
get_add_column_sqlGenerate ADD COLUMN DDL
get_alter_column_sqlGenerate ALTER COLUMN DDL
get_create_index_sqlGenerate CREATE INDEX DDL
get_create_foreign_key_sqlDDL stub
drop_indexDrop an index
drop_foreign_keyNo-op

Building from Source

Prerequisites

  • Rust (edition 2021)
  • A running Redis instance (for integration tests)

Build

cargo build --release

The binary will be located at target/release/tabularis-redis-plugin-rust.

Install Locally

A convenience script is provided to build and copy the plugin to the Tabularis plugins directory:

./sync.sh

Development

Testing the Plugin

A test binary simulates Tabularis by sending JSON-RPC requests to the plugin over stdio:

cargo run --bin test_plugin

Performance baselines

TABULARIS_PLUGIN_PERF=1 cargo run --bin test_plugin

Timings for virtual key queries and pagination are printed to stderr.

Tech Stack

  • Language: Rust (edition 2021)
  • Redis client: redis 1.x (TLS via rustls, cluster support)
  • SQL parsing: sqlparser for metadata-table queries
  • Serialization: serde + serde_json
  • Protocol: JSON-RPC 2.0 over stdio

License

Apache License 2.0