📡 P3X Redis UI can work with huge key sets, is functional and works on the web and desktop (Electron) v2020.10.169
Bugs are evident™ - MATRIX️
NodeJs LTS Version Requirement
>=12.13.0
Built on NodeJs
v12.18.2
The async
and await
keywords are required. Only the latest LTS variant is supported.
Install NodeJs:
https://nodejs.org/en/download/package-manager/
Description
p3x-redis-ui
is a new Redis GUI which can serve as a backend server or as a desktop application.
Some of the features are coming below.
Donated-Ware features
The p3x-redis-ui+
version has additional features.
The donation is $1/month. Please contact at alabard@gmail.com and can donate @ https://paypal.me/patrikx3
The features that are only working in the donated-ware version:
- JSON editor
- Cluster
- AWS ElastiCache
- Gcloud memorystore
- Azure Redis
To check if your license is valid @
https://server.patrikx3.com/api/patrikx3/redis-ui/status/your-license-key
New features
Users, that donated, have a big chance that requests for new features will be implemented.
Possible new features
- SSH tunnel
- Upload binary data
- Collapse/expand recursively on individual leafs
Plus function problems
Given, I do not have a full fledged server and to maintain the servers it costs money, it is possible, sometimes the server goes down. It is rare, but it will be back up probably in 5-10 minutes. If there is a problem that is longer, please contact me.
Contributors license
Contributors get plus donate license for free for a year.
Contributors, that created features that are working only in the donate-ware version get a license for life.
Warning
If you are reading the readme
fom Docker, the links are not working, please read the readme
from GitHub or Corifeus @
The online current version
https://p3x.redis.patrikx3.com - this is the plus version
This Redis database every day in the morning European time CET restores some data, so you may do whatever you want to do.
Besides, you could experience the test app to exit for 1 second, because it could auto update itself. It auto updates itself when the code from Git changes.
Third, it is a snapshot, it is possible, that the features are different from GitHub or NPM as the releases are usually monthly or as they happen.
Screenshots
Screenshots readme
Releases
Snap
AppImage
https://github.com/patrikx3/redis-ui/releases
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
$HOME/opt/p3x-redis-ui-a.b.c-x86_64.AppImage &
It then actually integrates itself into the menus and it will auto update itself.
On ElectronJs
(The GitHub versions are always instant, while the ElectronJs Apps releases are delayed.)
https://electronjs.org/apps/p3x-redis-ui
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
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
docker-compose up
Bare
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
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
Features
- When in the desktop app (Electron), your port must be not blocked on 7844 and 7845 (one is the redis server, the other is to communicate from the redis server to the electron app)
- To show the menu in the desktop version, click ALT
- There is a new feature in the settings/tree setting, which limits the received keys, the minimum is 100, the maximum is 100k, so there is no more crash, because of that
- To make more responsive the GUI, start with search in a key set, instead of loading every keys...
- Since
v2020.4.189
, the tree can handle bigger key count, as of now, we are using deferred rendering for the tree - only rendering what is in the viewport, so it should be much faster versus rendering everything at once - Please, check out your Redis use case, if this program can cover your requirements
- Does not handle binary data
- Does not work with sentinel
- Has experimental cluster support
- Thanks so much for the awesome contribution by @idetoile of the cluster function.
- Able to monitor all channel messages on the console by using a checkbox.
- Works with multiple languages
- Works as a backend
- Works as a desktop via Electron
- I took very careful of the error handling (as much I can find errors)
- Starts with no settings without config, or setup your own config
- Able to create, test, save, delete multiple connections or a readonly connections setup, for shared usage
- Able to use the console and interact with Redis
- TAB or SHIFT + TAB completion like bash is enabled
- Cursor UP or DOWN history is enabled
- Online you are able to choose the tree separator, for example :, /, -, space etc... or even empty separator
- It is based on Redis-Commander and phpRedisAdmin
- You can select the database via console or the drop down.
- The database select drop down shows if the checked database is empty or filled, so you can always know which is filled
- Save button to save the db
- Full statistics pages, can be useful
- This is just a New Kind on the Block in the Redis world, so, of course, there are advantages and disadvantages in the other Redis GUIs
- Dark - Dracula / light themes
- Search
- Client side mode searching in keys - small key set
- Server side mode searching in keys - large key set
- Search mode
- the search keys starts with a string key
- the search keys includes a string in the key
- From 320px width, it is supposed to be 100% responsive
- There is a key sorting function, which has a penalty, because it sorts with natural compare, which means it is more human display, then just raw characters, but up to 100k the keys is still ok.
- Maximum keys for this App
- This application is usable up to 100k keys - given it pre-loads all keys and related info at once plus sorting - with natural comparing ...
- For big key set to be usable paging should be a maximum 1000 keys / page, though for 250 is the sweetest spot
This software is more functional than fast ...
TODO
The to do readme
Change log
The change log readme
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:
git clone https://github.com/patrikx3/redis-ui-material.git
cd redis-ui-material
npm install
npm run dev
git clone https://github.com/patrikx3/redis-ui-server.git
cd redis-ui-server
npm install
npm run dev
git clone https://github.com/patrikx3/redis-ui.git
cd redis-ui
npm install
./scripts/start-local.sh
./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 ...
English strings, for the web UI
English strings, for the Electron
For a new language:
Add into redis-ui-material/src/bundle.js
.
This solution is not using REST at all, but instead uses Socket.IO 🤣, which is weird, but I like it, it is supposed to be more responsive, as there is no big overhead in the HTTP protocol.
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
🙏 This is an open-source project. Star this repository, if you like it, or even donate to maintain the servers and the development. Thank you so much!
Possible, this server, rarely, is down, please, hang on for 15-30 minutes and the server will be back up.
All my domains (patrikx3.com and corifeus.com) could have minor errors, since I am developing in my free time. However, it is usually stable.
Note about versioning: Versions are cut in Major.Minor.Patch schema. Major is always the current year. Minor is either 4 (January - June) or 10 (July - December). Patch is incremental by every build. If there is a breaking change, it should be noted in the readme.
P3X-REDIS-UI Build v2020.10.169
IntelliJ - The most intelligent Java IDE