/badger-cli

A simple CLI for badger DB

Primary LanguageGoMIT LicenseMIT

badger-cli

License Go Report Card

badger-cli is a simple command-line interface for interacting with Badger DB, a fast key-value database written in Go.

demo

Features

  • Connect to an existing Badger DB
  • Get, set, and delete key-value pairs
  • List keys with optional glob pattern matching
  • Read-only mode for safe database inspection

Installation

Install using homebrew:

brew install lovromazgon/tap/badger-cli

Or build it from source using Go:

go install github.com/lovromazgon/badger-cli

Or download the binary manually from the latest release.

Usage

$ badger-cli -h

Usage: badger-cli [options] <database_path>

A command-line interface for a Badger key-value database.

Options:
    -r, --readonly  Open database in read-only mode
    -h, --help      Show help

Examples:
    badger-cli /path/to/db
    badger-cli --readonly /path/to/db

Read-only Mode

To open the database in read-only mode (useful for inspecting production databases safely):

badger-cli --readonly /path/to/your/badger/db
# or
badger-cli -r /path/to/your/badger/db

In read-only mode:

  • The prompt will show [READONLY] >
  • Only get and list commands are available
  • set and delete commands are disabled
  • The database is opened with read-only permissions
  • The database must already exist (will not create new databases)
  • If the database is already in use by another process, you may need to run without -readonly first to ensure proper initialization

Once the CLI is running, you can use the following commands:

  • get <key>: Retrieve the value for a given key
  • set <key> <value>: Set a value for a given key (not available in read-only mode)
  • delete <key>: Delete a key-value pair (not available in read-only mode)
  • list [pattern]: List all keys, optionally filtered by a glob pattern
  • exit: Exit the CLI

Examples

Normal mode:

> set mykey myvalue
Value set successfully
> get mykey
myvalue
> list my*
mykey
> delete mykey
Value deleted successfully
> list
No matching keys found
> exit

Read-only mode:

[READONLY] > get mykey
myvalue
[READONLY] > list my*
mykey
[READONLY] > set newkey newvalue
Error: Cannot set values in read-only mode
[READONLY] > delete mykey
Error: Cannot delete values in read-only mode
[READONLY] > exit

Glob Pattern Matching

The list command supports glob pattern matching:

  • *: Matches any sequence of characters
  • ?: Matches any single character
  • [abc]: Matches any character in the set
  • [a-z]: Matches any character in the range

Examples:

  • list app_*: Lists all keys starting with "app_"
  • list *_config: Lists all keys ending with "_config"
  • list user_??: Lists all keys starting with "user_" followed by exactly two characters

Acknowledgements

The initial version of this CLI was developed with assistance from an AI language model. The code has since been modified and expanded.