.editorconfig 0000664 0000000 0000000 00000000637 14601362322 0013540 0 ustar 00root root 0000000 0000000 # EditorConfig helps developers define and maintain consistent
# coding styles between different editors and IDEs
# editorconfig.org
root = true
[*]
# Change these settings to your own preference
indent_style = space
indent_size = 4
# We recommend you to keep these unchanged
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false
.github/ 0000775 0000000 0000000 00000000000 14601362322 0012415 5 ustar 00root root 0000000 0000000 .github/FUNDING.yml 0000664 0000000 0000000 00000000617 14601362322 0014236 0 ustar 00root root 0000000 0000000 # These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: p3x-redis-ui
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
custom: # Replace with a single custom sponsorship URL .gitignore 0000664 0000000 0000000 00000000344 14601362322 0013046 0 ustar 00root root 0000000 0000000 /build
/node_modules
/*.log
/*.iws
.idea/workspace.xml
.idea/tasks.xml
.idea/profiles_settings.xml
.idea/inspectionProfiles/Project_Default.xml
.idea/inspectionProfiles/profiles_settings.xml
node_modules/.yarn-integrity
/dist .npmignore 0000664 0000000 0000000 00000000247 14601362322 0013057 0 ustar 00root root 0000000 0000000 /.idea
/artifacts
/build
/test
/node_modules
/*.iml
/*.ipr
/*.iws
/.travis.yml
/.scrutinizer.yml
/Gruntfile.js
/*.lock
*.log
/corifeus-boot.json
/secure
/scripts
/dist .travis.yml 0000664 0000000 0000000 00000001611 14601362322 0013165 0 ustar 00root root 0000000 0000000 os: osx
osx_image: xcode8
language: node_js
cache:
npm: false
node_js:
- node
before_script:
- npm install -g grunt-cli npm
- export CSC_IDENTITY_AUTO_DISCOVERY=false
- npm run publish-osx
env:
global:
secure: J79NeoXU/k9mr48U7ZG2JpivEZiZEc2ipdz8Am+g8wlKnBzoE6jj2Al7eysKwTLr+zizmo+xYRMKJMYd6F9wQ57WzHo4T1Xw7b+nPnRVxlzS/sm6NlbZ3GNRLQ9QivVpQicu/IRBB5eN+FEJ9G5Evr2lz2Ze2An3f7TYYpK4MitsTMl8eElj24CKryqp+n/MDQ0IoH5Pce/HuVgL+v7N6XmLPiuOJQbbHPUaktzo5gU+LPkQim5BdTcM3VRzLw/m2TYNuuRNUzgMcRw0pEZcqoZ/FtUtBUES7tDEpwUMsrQ/YfzvmmPVNE82Dc+iaYID93hS+GG6+Y4SZikXdBjMubAbfAC8obqVUgbIR0p1FlaNj4yZfs44Lr69S0r85zvOlzvS6hvbKz+pLsbPanduOx6vtK2cCEJfeJG4iXKRhUYdKiPJkRE61S+7uRHV8ysBDZszQlU/c/HzmH27CykrhJEOcqRHCkfMCbF1T+OiHnDK1X0iqzo3urTIWjzgNIexWETQs9ls68D9HaSz2biG0qYStR0q1qA0lZSvq6fWHc1YTm8kg6Q98/TjXYChsDUT/xLe/31hSO8AmjwQ8ESsfvot6yl5w+qgM8tFeAGA1faWHOCtLhbbIFVagXQ/3iuihjxHgy+ALvB9fysUpMRingzE3o3z84RxYJjP3fug0r0=
Dockerfile 0000664 0000000 0000000 00000000602 14601362322 0013045 0 ustar 00root root 0000000 0000000 #docker login
#docker build -t patrikx3/p3x-redis-ui .
#docker tag IMAGE_ID patrikx3/p3x-redis-ui:latest
#docker push patrikx3/p3x-redis-ui
#docker images
#docker rmi -f IMAGE_ID
FROM node:latest
MAINTAINER patrikx3/p3x-redis-ui - Patrik Laszlo
ENV COMPOSER_PROCESS_TIMEOUT=3600
ENV DEBIAN_FRONTEND=noninteractive
EXPOSE 7843
RUN npm -g --unsafe-perm install p3x-redis-ui
CMD p3x-redis
Gruntfile.js 0000664 0000000 0000000 00000001066 14601362322 0013355 0 ustar 00root root 0000000 0000000 const utils = require('corifeus-utils');
module.exports = (grunt) => {
const _ = require('lodash');
const builder = require(`corifeus-builder`);
const loader = new builder.loader(grunt);
loader.js({
replacer: {
type: 'p3x',
npmio: true,
opencollective: true,
},
});
//console.log(JSON.stringify(test, null, 4));
let defaults = builder.config.task.build.js.slice()
// defaults.splice(defaults.indexOf('mocha_istanbul:cory-coverage'), 1)
grunt.registerTask('default', defaults);
}
LICENSE 0000664 0000000 0000000 00000002413 14601362322 0012062 0 ustar 00root root 0000000 0000000
@license p3x-redis-ui v2019.10.269
📡 P3X Redis UI can work with huge key sets, is functional and works on the web and desktop (Electron)
https://pages.corifeus.com/redis-ui
Copyright (c) 2019 Patrik Laszlo / P3X / Corifeus and contributors.
MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
README.md 0000664 0000000 0000000 00000035310 14601362322 0012336 0 ustar 00root root 0000000 0000000 [//]: #@corifeus-header
[![NPM](https://nodei.co/npm/p3x-redis-ui.png?downloads=true&downloadRank=true)](https://www.npmjs.com/package/p3x-redis-ui/)
[![Donate for Corifeus / P3X](https://img.shields.io/badge/Donate-Corifeus-003087.svg)](https://paypal.me/patrikx3) [![Contact Corifeus / P3X](https://img.shields.io/badge/Contact-P3X-ff9900.svg)](https://www.patrikx3.com/en/front/contact) [![Corifeus @ Facebook](https://img.shields.io/badge/Facebook-Corifeus-3b5998.svg)](https://www.facebook.com/corifeus.software) [![Build Status](https://api.travis-ci.com/patrikx3/redis-ui.svg?branch=master)](https://travis-ci.com/patrikx3/redis-ui)
[![Uptime Robot ratio (30 days)](https://img.shields.io/uptimerobot/ratio/m780749701-41bcade28c1ea8154eda7cca.svg)](https://uptimerobot.patrikx3.com/)
[![Backers on Open Collective](https://opencollective.com/p3x-redis-ui/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/p3x-redis-ui/sponsors/badge.svg)](#sponsors)
# 📡 P3X Redis UI can work with huge key sets, is functional and works on the web and desktop (Electron) v2019.10.278
**Bugs are evident™ - MATRIX️**
### Node Version Requirement
```
>=10.16.0
```
### Built on Node
```
v12.8.1
```
The ```async``` and ```await``` keywords are required.
Install NodeJs:
https://nodejs.org/en/download/package-manager/
# Description
[//]: #@corifeus-header:end
`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.
## The online current version
https://p3x.redis.patrikx3.com
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](artifacts/readme/screenshots.md)
## Electron releases
### Snap
[![LINK](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](https://snapcraft.io/p3x-redis-ui#cory-non-external)
### AppImage
https://github.com/patrikx3/redis-ui/releases
After downloading the ```AppImage```, make it an executable.
```bash
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 &
```
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](artifacts/readme/start-up-server.md)
[Some description about the config file readme](p3xrs.json)
### Docker is working with compose
https://github.com/patrikx3/redis-ui/blob/master/docker-compose.yml
or, if you want to use bare with `Dockerfile`:
```bash
# here you can set your my-own-settings folder
docker run -e P3XRS_DOCKER_HOME='/settings' -v /my-own-setting/settings -h docker-p3x-redis-ui -p 7843:7843 -t -i patrikx3/p3x-redis-ui
```
The GUI will be @ http://localhost:7843
## Features
* **Does not work with sentinel**
* **Has experimental cluster support**
* Thanks so much for the awesome contribution by [@idetoile](https://github.com/idetoile) of the cluster function.
* Works with multiple languages
* Works as a backend
* Works as a desktop via Electron
* Linux
* Windows
* macOS
* 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.
* There is a performance penalty for this application, given it uses AngularJS `ng-repeat` for the tree component. The best is if your application uses nested keys (something:nested:good), then the tree will be fast, but, for example, Nextcloud uses about 500 keys inline and it can take 5 seconds to generate the tree.
* Another solution is that instead of the : separator for your app, you can use the / separator. Then it will be much more responsive, see the settings tree separator.
* A second solution is to use paging, the default paging is 50 keys
* 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 ...
* In that case, loading all keys into the browser takes about maximum 5-15 seconds
* For big key set to be usable paging should be a maximum 100 keys / page, though for 50 is the sweetest spot
* This application is not recommended with over 100k keys, because it might just crash the NodeJs server. I can understand there are use cases where you need over 100k keys, but this is not that p3x-redis-ui.
* This app including functions like sorting and tree options that are fancy vs large sets ...
* Able to monitor all channel messages on the console by using a checkbox.
This software is more functional than fast ...
## Performance
#### Key set size
* On the test server you can test
* Database 0 - below 10k keys
* Fancy
* Fast
* Database 1 - 10k keys
* It is fast totally. Given, it is not over for 50 keys / page.
* Database 2 - 100k keys
* You will see, that with large sets, it can take up to 15 seconds to load all the keys (dependent on the workstation and memory) and sort (if you enabled in the settings). It is usable, but it is fancy and fast for smaller key sets.
* Database 3 - 1 million keys
* Given the app pre-loads all keys at once, the browser or the electron app for a small workstation could crash
* The latency is quite long, so the app is not so responsive
* The app is certified to work for max 100k keys, although it works with over 900k keys
* The below functions are happening if the key count is above 110k keys
* Key sorting is disabled
* Searching only allows on server side searching
* In the tree, no fancy information is showing - to reduce the stressing on the browser
* Although, this app works with 1 million keys and reduced functions. For such huge key count, it is recommended to use the pure `redis-cli`.
**The sweet spot for the key count is around 10-20k including key sorting with max 100 key / page and still the app is very responsive. If you have a huge key set, make sure to search on the server and it will be very responsive.**
Above 10-20k key count as the key large set grows the GUI latency is including as well.
Of course, we could set a limit and the UI would be always responsive, but there was no request of this feature.
# TODO
[The to do readme](todo.md)
# Change log
[The change log readme](changelog.md)
# Contributors
[The contributors readme](contributors.md)
# 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](https://github.com/patrikx3/redis-ui-server)
[Client on GitHub](https://github.com/patrikx3/redis-ui-material)
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:
```bash
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 ...
[English strings, for the web UI](https://github.com/patrikx3/redis-ui-material/blob/master/src/strings/en/strings.js)
[English strings, for the Electron](https://github.com/patrikx3/redis-ui/blob/master/src/strings/en/index.js)
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
http://blog.arungupta.me/rest-vs-websocket-comparison-benchmarks/
# URL links
[P3X Redis UI playground](https://patrikx3.com/hu/ajto/jatszoter/22/p3x-reds-ui#PG22)
[Corifeus P3X Redis UI pages](https://pages.corifeus.com/redis-ui/)
[AlternativeTo Redis UI](https://alternativeto.net/software/p3x-redis-ui/)
[NPM P3X Redis UI](https://www.npmjs.com/package/p3x-redis-ui)
[Snap Store](https://snapcraft.io/p3x-redis-ui)
[//]: #@corifeus-footer
---
🙏 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](https://patrikx3.com) and [corifeus.com](https://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**](https://pages.corifeus.com/redis-ui) Build v2019.10.278
[![Donate for Corifeus / P3X](https://img.shields.io/badge/Donate-Corifeus-003087.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZVM4V6HVZJW6) [![Contact Corifeus / P3X](https://img.shields.io/badge/Contact-P3X-ff9900.svg)](https://www.patrikx3.com/en/front/contact) [![Like Corifeus @ Facebook](https://img.shields.io/badge/LIKE-Corifeus-3b5998.svg)](https://www.facebook.com/corifeus.software)
## P3X Sponsors
[IntelliJ - The most intelligent Java IDE](https://www.jetbrains.com/?from=patrikx3)
[![JetBrains](https://cdn.corifeus.com/assets/svg/jetbrains-logo.svg)](https://www.jetbrains.com/?from=patrikx3) [![NoSQLBooster](https://cdn.corifeus.com/assets/png/nosqlbooster-70x70.png)](https://www.nosqlbooster.com/)
[The Smartest IDE for MongoDB](https://www.nosqlbooster.com)
# Open collective
## Contributors
This project exists thanks to all the people who contribute.
## Backers
Thank you to all our backers!
🙏 [Become a backer](https://opencollective.com/p3x-redis-ui#backer)
## Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website.
🙏 [Become a sponsor](https://opencollective.com/p3x-redis-ui#sponsor)
[//]: #@corifeus-footer:end
artifacts/ 0000775 0000000 0000000 00000000000 14601362322 0013035 5 ustar 00root root 0000000 0000000 artifacts/helpers/ 0000775 0000000 0000000 00000000000 14601362322 0014477 5 ustar 00root root 0000000 0000000 artifacts/helpers/redis-commander-types/ 0000775 0000000 0000000 00000000000 14601362322 0020712 5 ustar 00root root 0000000 0000000 artifacts/helpers/redis-commander-types/redis-type-hash.png 0000664 0000000 0000000 00000000304 14601362322 0024423 0 ustar 00root root 0000000 0000000 PNG
IHDR a sRGB pHYs tIMEp tEXtComment Created with GIMPW 1IDAT8c`bř(b :HGP)* G<