Skip to content

📡 P3X Redis UI: A highly functional and convenient database GUI that fits in your pocket, accessible on both responsive web and desktop applications.

License

Notifications You must be signed in to change notification settings

patrikx3/redis-ui

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NPM Donate for Corifeus / P3X Contact Corifeus / P3X Corifeus @ Facebook Uptime Robot ratio (30 days)

📡 P3X Redis UI: A highly functional and convenient database GUI that fits in your pocket, accessible on both responsive web and desktop applications v2024.10.106

Bugs are evident™ - MATRIX️

NodeJS LTS is supported

Built on NodeJs version

v22.4.0

Description

p3x-redis-ui is a versatile Redis GUI that can function as either a backend server on the web or as a desktop application. This open-source software is particularly effective for managing JSON, featuring integration with JSONEditor and ACE. Explore a variety of options in the 'edit json' button dialog, which also supports uploading and downloading binary data. Additionally, it handles SSH, cluster, and sentinel configurations.

Features

Configuration and Security

  • Secure Configuration: Setup is intricate due to its roots in shared web applications, ensuring that passwords and sensitive data are safeguarded with unique identifiers for both main and node configurations. Node-specific IDs enhance security measures for node passwords.

Compatibility and Usage

  • Redis Versions and TLS: Supports Redis 6 with TLS, enhancing security and data integrity.
  • Pika Compatibility: Compatible with Pika, though not perfectly optimized.
  • SSH Tunneling: Functional for single instances. Support for cluster and sentinel configurations is under development.
  • Environmental Customizations: Customize the server port and home directory via P3XRS_PORT and P3XRS_DOCKER_HOME environment variables.

Data Handling

  • Binary Data Management: Special care is needed when handling binary data to prevent issues. Use the download button for binary data; direct editing in text mode is not supported for binary content.
  • Large Data Sets: Handles values larger than 256 kB, indicated by [object ArrayBuffer]. For large values, utilize binary upload and download capabilities.
  • Clipboard Operations: Text copying is supported directly; binary data requires using the download functionality.

User Interface and Experience

  • Desktop Shortcuts: Access menus in the desktop version by pressing ALT.
  • Responsive Design: Fully responsive, ensuring usability on phones and tablets.
  • Themes: Choose between Dark - Dracula and light themes for personalized visual comfort.
  • Data Visualization and Management:
    • Tree view settings allow adjustments to key count from a minimum of 100 to a maximum of 100,000 to prevent crashes.
    • Deferred rendering in the tree view enhances performance by rendering only what is visible in the viewport.

Advanced Features

  • Monitoring and Logging: Monitor all channel messages on the console with a simple checkbox. Console history is stored indefinitely in local storage, keeping the last 20 entries accessible.
  • Database Interaction: Select databases via the console or a dropdown menu, which also indicates whether databases are empty or filled.
  • Search Functionality:
    • Client-side mode for searching small sets of keys.
    • Server-side mode for efficient searching within large sets of keys.
    • Search can be configured to start with a specific string or include a string within the keys.

Network Setup and Extensions

  • Sub-directory Support: Utilize Nginx/Ingress to rewrite paths when used in a sub-directory.

Contributions and Support

  • Cluster Support: Recently added and continuously improving. Contributions by @devthejo have significantly enhanced this functionality.
  • Community and Feedback: As this tool evolves, feedback and issue reporting are highly valued to refine and improve the features.

Redis UI provides a powerful interface for managing Redis databases with a focus on security, efficiency, and user experience. Whether you are dealing with small or large data sets, p3x-redis-ui offers robust solutions tailored to meet diverse operational needs.

Important Notice

To ensure accuracy and minimize errors, we strongly advise against manually creating the configuration JSON file using a text editor. Instead, utilize the GUI to generate the configuration, which can then be seamlessly integrated into systems like Kubernetes.

Awareness of AngularJs Security Risks

For detailed information on potential vulnerabilities and mitigation strategies, please refer to our dedicated documentation.

Access the Latest Online Version

Explore the most current iteration of our project at p3x.redis.patrikx3.com

Operational Insights:

  • Data Restoration: Our Redis database automatically restores certain datasets every morning at CET, offering a fresh start daily. Feel free to experiment as needed.

  • Application Stability: You may notice brief downtime (about 1 second) in our test application, possibly due to automatic updates triggered by changes in the Git repository.

  • Version Consistency: Please be aware that the live snapshot might differ from the versions available on GitHub or NPM. Updates and new features are typically released monthly or as developments occur.

Screenshots

Screenshots readme

Change log

The change log readme

Releases / Downloadable installer

https://github.com/patrikx3/redis-ui/releases

MacOS Compatibility

Our application supports builds for both Intel and Apple Silicon architectures.

Snap

LINK

Flathub

You download from the releases page and install as:

wget https://github.com/patrikx3/redis-ui/releases/download/v${VERSION}/P3X-Redis-UI-${VERSION}-x86_64.flatpak
flatpak install ./P3X-Redis-UI-${VERSION}-x86_64.flatpak
flatpak run com.patrikx3.redis_ui

Besides the menu is integrated.

AppImage, dep, rpm

AppImage, dep and rpm auto update itself.

To integrate into the menu using AppImage

Execute:

sudo add-apt-repository ppa:appimagelauncher-team/stable
sudo apt-get update
sudo apt-get install appimagelauncher

After downloading the AppImage, make it an executable.

mkdir -p $HOME/opt
mv ~/Downloads/p3x-redis-ui-a.b.c-x86_64.AppImage $HOME/opt/
chmod +x $HOME/opt/p3x-redis-ui-a.b.c-x86_64.AppImage
# Then you can run it
$HOME/opt/p3x-redis-ui-a.b.c-x86_64.AppImage &

On ElectronJs

The app can be found on ElectronJs Apps and search for P3X, you will find it.

CLI

Start up with a server or via a browser and NodeJs/NPM.

Start up with a server readme

Some description about the config file readme

Some description about the config connections readme

Example of config connections

Docker

https://hub.docker.com/r/patrikx3/p3x-redis-ui

Compose

https://github.com/patrikx3/redis-ui/blob/master/docker-compose.yml

wget https://raw.githubusercontent.com/patrikx3/redis-ui/master/docker-compose.yml
# You might want to tune the settings folder in the docker-compose.yml.
# the /home/user/p3x-redis-ui-settings settings folder in yml should be set by yourself.
docker-compose up

Bare

# you can tune the settings folder
# in the -v first part is where you can set your own folder
mkdir -p ./p3x-redis-ui-settings
docker run -v $PWD/p3x-redis-ui-settings:/settings -h docker-p3x-redis-ui -p 7843:7843 -t -i patrikx3/p3x-redis-ui

The GUI will be @ http://localhost:7843

Kubernetes

A complete example of deployment p3x-redis-ui in kubernetes using raw manifests https://github.com/patrikx3/redis-ui/blob/master/k8s/manifests

kubectl apply -f namespace.yaml
# Do not forget to edit redis host and password configuration
kubectl apply -f configmap.yaml
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
kubectl apply -f ingress.yaml

Helm chart p3x-redis-ui deployment in kubernetes https://github.com/patrikx3/redis-ui/blob/master/k8s/chart

helm template -f values.yaml release --namespace namespace . > generated.yaml
kubectl apply -f generated.yaml

Contributors

The contributors readme

Development

For file names do not use camelCase, but use kebab-case. Folder should be named as kebab-case as well. As you can see, all code filenames are using it like that, please do not change that. Please apply the .editorconfig settings in your IDE.

It creates a package that allows you to compose p3x-redis-ui-server and p3x-redis-ui-material into one:

Server on GitHub
Client on GitHub

If you develop on this app, you are required to test, that all JS you code write is working with Electron (as the embedded Electron NodeJs version is usually below the real NodeJs). Once the server and client is running as above, you clone this repo and test like this:

# terminal 1
git clone https://github.com/patrikx3/redis-ui-material.git
cd redis-ui-material
npm install
npm run dev

# terminal 2
git clone https://github.com/patrikx3/redis-ui-server.git
cd redis-ui-server
npm install
npm run dev

# if you are not working on Electron, at this point you can fire the browser
# @ http://localhost:8080/

# terminal 3 
git clone https://github.com/patrikx3/redis-ui.git
cd redis-ui
npm install
./scripts/start-local.sh
# or
.\scripts\start-local.cmd

Development of the translations

By default, only English is created, but given all strings are from a JS file, it is very quick to spawn another language eg. German, French, Spanish etc ...

For a new language
English strings, for the web UI
English strings, for the Electron

Moment a new language for vendor (require moment/locale)
JSON Editor, to incorporate a new language
Moment a new language for Material (momentDateMap)
Humanize duration

Solution

Interestingly, this solution doesn't employ REST; it opts for Socket.IO instead! 😄 It might seem a bit unconventional, but I actually appreciate the choice. Using Socket.IO is expected to be more responsive, as it avoids the significant overhead associated with the HTTP protocol. This approach should provide a smoother and faster interaction experience.

Reference for Socket.IO speed

https://www.google.com/search?q=rest+vs+websocket+comparison+benchmarks

URL links

P3X Redis UI playground

Corifeus P3X Redis UI

AlternativeTo Redis UI

NPM P3X Redis UI

Snap Store

Github.IO Page


Support Our Open-Source Project ❤️

If you appreciate our work, consider starring this repository or making a donation to support server maintenance and ongoing development. Your support means the world to us—thank you!

Server Availability

Our server may occasionally be down, but please be patient. Typically, it will be back online within 15-30 minutes. We appreciate your understanding.

About My Domains

All my domains, including patrikx3.com and corifeus.com, are developed in my spare time. While you may encounter minor errors, the sites are generally stable and fully functional.

Versioning Policy

Version Structure: We follow a Major.Minor.Patch versioning scheme:

  • Major: Corresponds to the current year.
  • Minor: Set as 4 for releases from January to June, and 10 for July to December.
  • Patch: Incremental, updated with each build.

Important Changes: Any breaking changes are prominently noted in the readme to keep you informed.


P3X-REDIS-UI Build v2024.10.106

NPM Donate for Corifeus / P3X Contact Corifeus / P3X Like Corifeus @ Facebook