Git Product home page Git Product logo

patrikx3 / redis-ui Goto Github PK

View Code? Open in Web Editor NEW
680.0 15.0 71.0 4.25 MB

📡 P3X Redis UI is a very functional handy database GUI and works in your pocket on the responsive web or as a desktop app

Home Page: https://www.corifeus.com/redis-ui

License: MIT License

JavaScript 92.84% Batchfile 0.37% Shell 1.67% CSS 0.37% HTML 3.42% Dockerfile 1.34%
redis gui electron web dark light tree desktop ioredis internationalization

redis-ui's Introduction

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

📡 P3X Redis UI is a very functional handy database GUI and works in your pocket on the responsive web or as a desktop app v2024.4.240

Bugs are evident™ - MATRIX️

NodeJS LTS is supported

Built on NodeJs version

v20.12.2

Description

p3x-redis-ui is a Redis GUI which can serve as a backend server on the web or as a desktop application.

Some of the features are coming below. This is open source software.

The best use case for this Redis GUI, if you manage JSON, as it includes JSONEditor and ACE. Check out the different options in the edit json button dialog, besides, you can upload and download binary data. SSH, cluster, sentinel.

Features

  • Works with Pika, but it is not perfect
  • SSH tunnel is working with single instance (cluster and sentinel is not done).
  • Please, careful, the values can show, but if you want to use binary data, only save, when you uploaded, and it says [object ArrayBuffer], as if you save a text and it will not work anymore after you download the binary data, that is because binary and text is different
  • Copying to the clipboard, it is only working with text. Binary data wil not work. Use the download binary button.
  • If you are using a value that is bigger than 256 kB, it will say [object ArrayBuffer], that is ok, for big values, use binary (upload binary, download binary)
  • You can download and upload binary files in string, hash, list, set and zset
  • The console history is kept indefinite in the local storage (last 20 entries)
  • Redis 6 with TLS is enabled with this information:
  • You can override the server port via an environment variable P3XRS_PORT
  • You can override the server home directory via an environment variable P3XRS_DOCKER_HOME
  • In the connections, you can enable read only mode, which means, the user will not be able to modify via gui and the console (only pub/sub monitor and select database is allowed) is disabled.
  • In a sub-directory, you can use Nginx/Ingress to rewrite your paths.
  • 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
  • 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 work with sentinel, but it is new, so please file issues with errors, I will fix it quickly
  • Has cluster support
    • Thanks so much for the awesome contribution by @idetoile (now -> @devthejo) 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
    • Linux
    • Windows
    • MacOS (Intel & Apple silicon)
  • 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*
  • 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
  • The app is responsive, it works on a phone/tablet as well
  • 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.
  • For big key set to be usable paging should be a maximum 1000 keys / page, though for 250 is the sweetest spot

Warning

It is not recommend to generate the configuration JSON via a text editor. The perfect solution is to generate the configuration in the GUI, then apply for example in Kubernetes.

AngularJs Vulnerabilities

README and comments

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

Change log

The change log readme

Releases / Downloadable installer

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

MacOS

It is building on Intel and Apple silicon.

Fix downloaded file from GitHub

I am not an Apple guru, but I had to download the zip in arm64 version an execute on the unzipped app:

sudo xattr -rd com.apple.quarantine P3X-Redis-UI.app

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

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

Github.IO Page


🙏 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 v2024.4.240

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

redis-ui's People

Contributors

crper avatar jennas-lee avatar p3x-robot avatar sergeyshaykhullin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

redis-ui's Issues

time-grunt issue

@sindresorhus - Deprecated because Grunt is practically unmaintained. Move on to something better. This package will continue to work with Grunt v1, but it will not receive any updates.

how come you are saying Grunt is practically unmaintained while it is?
for example https://www.npmjs.com/package/grunt-cli was updated 2 months ago.
it is just a mature and there is not much to change on it, as it is stable. but should be an error, there would be a update for sure.
i think it should not be archived. 👍

Binary keys don't work

Binary keys are listed, but clicking on them throws an error:

Cannot read property '1' of undefined

Screenshot 2019-11-09 at 16 36 57

Redis supports binary keys:

Redis keys are binary safe, this means that you can use any binary sequence as a key, from a string like "foo" to the content of a JPEG file. The empty string is also a valid key.
https://redis.io/topics/data-types-intro

And I think they shouldn't be displayed as strings, but rather as binary numbers. Folder structure visible on the screenshot above shouldn't be used too.

gcloud memorystore support

Hi,

I'd love to use this with the gcloud memory store, but currently it does not work, as the CLIENT command is disabled (see bottom for the full list of blocked commands https://cloud.google.com/memorystore/docs/reference/redis-configs).

An example instance of the error, is when pressing TEST CONNECTION button:

ERR unknown command `client`, with args beginning with: `list`, 

If the CLIENT command is not crucial, and there was a workaround, I'd love to know :)

Thanks!

Redis pubsub support

Any change this would support viewing pubsub messages as the tool can provide a means to subscribe to an available channel and then the ui can provide a streaming view of messages published to the channel

Refreshing Browser in Cluster Mode causes "502 Bad Gateway"

I see there is an issue opened on this already and it is resolved in v2021.4.106 (#50)

Currently, we are using higher version 2021.4.141, looks like on this version the issue is back again, we see the same "502 Bad Gateway" error.

do you recommend sticking with the 2014.4.106 version to not see this issue?

Unable to connect to AWS ElasticCache Instance

Getting the following error when running docker image in K8S using the manifests files. For what's it worth "Test Connection" says successful.

Config

{
      "list": [
        {
          "name": "Prod",
          "host": "master.<redacted>.cache.amazonaws.com",
          "port": 6379,
          "password": "<redacted>",
          "awsElastiCache": true
        }
      ]
}

Error

[P3XRS] [PID: 000007]  ParserError: Protocol error, got "\u0015" as reply type byte. Please report this.
    at handleError (/usr/local/lib/node_modules/p3x-redis-ui/node_modules/redis-parser/lib/parser.js:190:15)
    at parseType (/usr/local/lib/node_modules/p3x-redis-ui/node_modules/redis-parser/lib/parser.js:304:14) {
  offset: 1,
  buffer: '{"type":"Buffer","data":[21,0,0,0,2,1,0]}'
}

[P3XRS] [PID: 000007]  socket.io connection-connect added new socket.id NOa5AkPFyewyOQkvAAAB to undefined name with Prod

[P3XRS] [PID: 000007]  socket.io connection-connect undefined Prod connected

compatibility with yedis

Hello @p3x-robot,
I'm trying to make redis-ui work with YEDIS from Yugabyte (an open-source cloud ready scalable PG and REDIS plateform).
There are few differences between REDIS and YEDIS, one of theses are the client command that is not supported yet.
Command client not yet supported. Arguments: [client, setname, ioredis-cluster(refresher)]
Related to yugabyte/yugabyte-db#985
I was wondering if there was possible to make the call to this command optional in redis-ui, or as a compatibility with Yedis option. What do you think ?

Read-Only Mode

Hello,

Is it possible to add a feature to connect to Redis hosts in read-only mode, that is to prevent users from being able to modify data stored in Redis?

Thanks.

Getting HACK tab blinking

When i switch tabs getting additional tab HACK.
Is this really needed? Is this a workaround to reload something?
image

https support

Hello,

this version currently doesn't support https right?

thank you

Does not run on Ubuntu 14.04

AppRun.
9/21/2018, 6:00:06 PM unhandledRejection TypeError: Path must be a string. Received undefined
    at assertPath (path.js:28:11)
    at basename (path.js:1395:5)
    at Command.parse (/run/firejail/appimage/.appimage-9973/resources/app.asar/node_modules/p3x-redis-ui-server/node_modules/commander/index.js:462:30)
    at cli (/run/firejail/appimage/.appimage-9973/resources/app.asar/node_modules/p3x-redis-ui-server/src/lib/cli.js:12:10)
    at boot (/run/firejail/appimage/.appimage-9973/resources/app.asar/node_modules/p3x-redis-ui-server/src/lib/boot.js:12:10)
    at Object.<anonymous> (/run/firejail/appimage/.appimage-9973/resources/app.asar/src/electron/app.js:4:1)
    at Object.<anonymous> (/run/firejail/appimage/.appimage-9973/resources/app.asar/src/electron/app.js:51:3)
    at Module._compile (module.js:642:30)
    at Object.Module._extensions..js (module.js:653:10)
    at Module.load (module.js:561:32) Promise {
  <rejected> TypeError: Path must be a string. Received undefined
    at assertPath (path.js:28:11)
    at basename (path.js:1395:5)
    at Command.parse (/run/firejail/appimage/.appimage-9973/resources/app.asar/node_modules/p3x-redis-ui-server/node_modules/commander/index.js:462:30)
    at cli (/run/firejail/appimage/.appimage-9973/resources/app.asar/node_modules/p3x-redis-ui-server/src/lib/cli.js:12:10)
    at boot (/run/firejail/appimage/.appimage-9973/resources/app.asar/node_modules/p3x-redis-ui-server/src/lib/boot.js:12:10)
    at Object.<anonymous> (/run/firejail/appimage/.appimage-9973/resources/app.asar/src/electron/app.js:4:1)
    at Object.<anonymous> (/run/firejail/appimage/.appimage-9973/resources/app.asar/src/electron/app.js:51:3)
    at Module._compile (module.js:642:30)
    at Object.Module._extensions..js (module.js:653:10)
    at Module.load (module.js:561:32) }
Parent pid 9973, child pid 9977

Reference:
AppImage/appimage.github.io#825

Running Redis UI on a subdirectory

Hi,

I've tried deploying Redis UI to Kubernetes Ingress and I've stumbled upon an issue running on non-root path.

When published via following definition:

- path: /redis/(.*)
  backend:
    serviceName: redis-ui                                                                                                        
    servicePort: 7843

The application loads on https://example.com/redis/, but the JS and page itself still loads as https://example.com/bundle.js.

Usually in similar docker apps, there is an environment variable that can provide the path, but I cannot find any in this project.

Is there a way to run the app on non-root path?

If there is a hint where to do the change in code, I can try doing pull request but haven't find the right place, so any hints would be welcomed too.

XSS In P3X Redis Console (Electron)

I found xss on redis console. I've done this by setting a key on redis-cli: set "<script>alert(12345)</script>" "some value". Go to console and list all the keys using the keys * command then it will be parsed as html tag.

You may also try this payload on redis-cli and then list the keys on p3x redis console using keys *:
set "<script>window.location.href = 'https://github.com/';</script>" "some value"

xss

Version: P3X Redis UI v2019.4.132

Cannot read property '1' of undefined connecting to redis 3.2.11

Connecting to a redis node (v3.2.11) in a cluster, I get the error Cannot read property '1' of undefined

image

This is my server info:

# Server
redis_version:3.2.11
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:7f7585cc3328f16d
redis_mode:cluster
os:Linux 3.10.0-862.14.4.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.8.5
process_id:953
run_id:3ce298d45e2642ef76c7b9b16efaf890436e8357
tcp_port:6381
uptime_in_seconds:9670777
uptime_in_days:111
hz:10
lru_clock:16149683
executable:/usr/local/bin/redis-server
config_file:/etc/redis/6381.conf

EDIT: more details

here's the console log took from the server version:

[P3XRS] 2019/06/04 15:12:07.985 [INFO]   [PID: 000203] socket.io connected p1yFiFD61Z0x9UekAAAA
[P3XRS] 2019/06/04 15:12:21.788 [WARN]   [PID: 000203] socket.p3xrs.connectionId undefined
[P3XRS] 2019/06/04 15:12:21.790 [INFO]   [PID: 000203] socket.io disconnected p1yFiFD61Z0x9UekAAAA
[P3XRS] 2019/06/04 15:12:22.076 [INFO]   [PID: 000203] socket.io connected ySV0aR3gj0An-BrlAAAB
[P3XRS] 2019/06/04 15:12:24.939 [WARN]   [PID: 000203] shared disconnectRedisIo try
[P3XRS] 2019/06/04 15:12:24.940 [INFO]   [PID: 000203] socket.io connection-connect added new socket.id ySV0aR3gj0An-BrlAAAB to P3Xid84bfc922b6101000077ad052f9b35a name with production-odcom-dmz-master-6381
[P3XRS] 2019/06/04 15:12:24.989 [INFO]   [PID: 000203] socket.io connection-connect P3Xid84bfc922b6101000077ad052f9b35a production-odcom-dmz-master-6381 connected
[P3XRS] 2019/06/04 15:12:25.063 [WARN]   [PID: 000203] socket.io getStreamKeys dbsize 10520 count 100
[P3XRS] 2019/06/04 15:12:35.568 [INFO]   [PID: 000203] socket.io connection-connect redis was already connected
[P3XRS] 2019/06/04 15:12:35.651 [WARN]   [PID: 000203] socket.io getStreamKeys dbsize 10367 count 100
[P3XRS] 2019/06/04 15:12:39.771 [ERROR]  [PID: 000203] TypeError: Cannot read property '1' of undefined
    at getKeysInfo (/usr/lib/node_modules/p3x-redis-ui/node_modules/p3x-redis-ui-server/src/service/socket.io/shared.js:222:43)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:189:7)

Main content section does not change after connection changed

The main content section remains the same as the initial connection even if switching to a different connection.

version: v2021.4.124
config:

{
  "list": [
    {
      "name": "c1",
      "host": "redis.n1",
      "port": 6379,
      "password": ""
    },
    {
      "name": "c2",
      "host": "redis-eqp.n1",
      "port": 6379,
      "password": ""
    },
    {
      "name": "c3",
      "host": "redis.n2",
      "port": 6379,
      "password": ""
    }
  ]
}

Refreshing Browser in Cluster Mode causes "502 Bad Gateway"

The UI works great on initial load in ClusterMode and Elasticache turned on, however if you refresh your browser the whole UI is crashing with "502 Bad Gateway"

image

The logs are saying this:

using home config is /settings/.p3xrs-conns.json
[P3XRS] [PID: 000008] socket.io connected -aorob8TknFo52g7AAAB
[P3XRS] [PID: 000008] socket.io connection-connect added new socket.id -aorob8TknFo52g7AAAB to undefined name with RcDevs
[P3XRS] [PID: 000008] socket.io connection-connect undefined RcDevs connected
[P3XRS] [PID: 000008] 1/22/2021, 7:41:30 PM unhandledRejection ReplyError: ERR SELECT is not allowed in cluster mode
at parseError (/usr/local/lib/node_modules/p3x-redis-ui/node_modules/redis-parser/lib/parser.js:179:12)
at parseType (/usr/local/lib/node_modules/p3x-redis-ui/node_modules/redis-parser/lib/parser.js:302:14) {
command: { name: 'select', args: [ '1' ] }
} Promise {
ReplyError: ERR SELECT is not allowed in cluster mode
at parseError (/usr/local/lib/node_modules/p3x-redis-ui/node_modules/redis-parser/lib/parser.js:179:12)
at parseType (/usr/local/lib/node_modules/p3x-redis-ui/node_modules/redis-parser/lib/parser.js:302:14) {
command: { name: 'select', args: [Array] }
}
}

Is this a known issue or does anyone know how to resolve it?

unable to set config through console

App version : 2020.10.329
steps

  1. go to console
  2. try to set a config. e.g. config set "save" "300 1"

got error
ERR Wrong number of arguments for CONFIG set
config set "save" "300 1"
ERR Wrong number of arguments for CONFIG set

Reids Azure Host: can't connect

Hey there,

Using P3X with a local redis server on Windows works fine.
But when I use a hosted redis on a Windows Azure (*.redis.cache.windows.net), I get the error:
ERR unknown command config, with args beginning with: get, databases,
Even though while adding the connection and testing it works fine.
I connect without using SSL by the way.

This may be related to something similar here:
spring-projects/spring-session#124

Feature Request: display full value on load

I am using Windows client and thank you for the excellent software. I really like it.

This is a minor feature request which will save me 1 additional click.
When I click on a key from the left hand menu, the value loads with a horizontal scroll bar to begin with. I then have to click the one-line item to see the full value. It would be really nice if the value just showed fully on the first load.

This might cause issues if the size of the stored value is huge. If there is a way to display the full value based on a size limit, it would be nice.

To reproduce,

Click on a key from the left menu
The value is displayed in 1 line with a horizontal scroll bar below Display json Tree option
Click on the value to expand

Crash when adding new connection

I get this crash when opening settings, using docker on openshift (not using the template you provided, as it had no healthchecks):

uncaughtException TypeError: Cannot read property 'map' of undefined
at Object.sendConnections (/usr/local/lib/node_modules/p3x-redis-ui/node_modules/p3x-redis-ui-server/src/service/socket.io/shared.js:68:44)
at Namespace. (/usr/local/lib/node_modules/p3x-redis-ui/node_modules/p3x-redis-ui-server/src/service/socket.io/socket.js:90:24)
at Namespace.emit (node:events:378:20)
at /usr/local/lib/node_modules/p3x-redis-ui/node_modules/socket.io/dist/namespace.js:134:27
at processTicksAndRejections (node:internal/process/task_queues:76:11)
socket.io connected dNmj9eh3QpZom7IKAAAB

Add multiple tree separator characters

In my case some keys using | character separator, but some . or :

I want to add all of them as a tree separator list or specify each character per connection/db/regex key

Problem with websocket-only transport

I have some network equipment and proxies between the browser and the node server that break the WebSocket Upgrade flow. As a result the web app does not function at all. The application seems to restrict the transport options to WebSocket-only (no long-poll). Is it possible to enable long polling as a fallback (or initial) option or have that configurable?

latest docker version prints this error: PM unhandledRejection TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string.

Hi, I just pulled the latest docker build and I'm getting this in the docker logs:

10/15/2019, 12:36:20 PM unhandledRejection TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type undefined
    at validateString (internal/validators.js:112:11)
    at Object.resolve (path.js:981:7)
    at cli (/usr/local/lib/node_modules/p3x-redis-ui/node_modules/p3x-redis-ui-server/src/lib/cli.js:81:42)
    at boot (/usr/local/lib/node_modules/p3x-redis-ui/node_modules/p3x-redis-ui-server/src/lib/boot.js:12:10)
    at Object.<anonymous> (/usr/local/lib/node_modules/p3x-redis-ui/bin/p3x-redis.js:3:1)
    at Module._compile (internal/modules/cjs/loader.js:945:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:962:10)
    at Module.load (internal/modules/cjs/loader.js:798:32)
    at Function.Module._load (internal/modules/cjs/loader.js:711:12)
    at Function.Module.runMain (internal/modules/cjs/loader.js:1014:10) Promise {
  <rejected> TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type undefined
      at validateString (internal/validators.js:112:11)
      at Object.resolve (path.js:981:7)
      at cli (/usr/local/lib/node_modules/p3x-redis-ui/node_modules/p3x-redis-ui-server/src/lib/cli.js:81:42)
      at boot (/usr/local/lib/node_modules/p3x-redis-ui/node_modules/p3x-redis-ui-server/src/lib/boot.js:12:10)
      at Object.<anonymous> (/usr/local/lib/node_modules/p3x-redis-ui/bin/p3x-redis.js:3:1)
      at Module._compile (internal/modules/cjs/loader.js:945:30)
      at Object.Module._extensions..js (internal/modules/cjs/loader.js:962:10)
      at Module.load (internal/modules/cjs/loader.js:798:32)
      at Function.Module._load (internal/modules/cjs/loader.js:711:12)
      at Function.Module.runMain (internal/modules/cjs/loader.js:1014:10)
}

I'm running the redis ui from docker compose:

redis-ui:
        container_name: redis-ui
        image: patrikx3/p3x-redis-ui:latest
        volumes:
            - ./docker/redis-ui/:/settings:ro
        depends_on:
            - redis1
            - redis2
            - redis3

and the ./docker/redis-ui/ folder contains the following:
.p3xrs-conns.json:

{
    "update": "2019-09-02T13:16:22.855Z",
    "list": [
        {
            "name": "redis-cluster",
            "cluster": true,
            "nodes": [
                {
                    "host": "redis1",
                    "port": 6379
                },
                {
                    "host": "redis2",
                    "port": 6379
                },
                {
                    "host": "redis3",
                    "port": 6379
                }
            ],
            "host": "redis1",
            "port": 6379,
            "id": "P3Xid0f3a53c2a6101000079605a4c12345"
        }
    ]
}

It would be nice to have tagged releases, so it would be possible to revert to last stable version.

connect to sentinel mode

I am new fish for using redis and use 3 servers to make sentinel mode.
In C#, the connection string is server1:6379,server2:6379,server3:6379.
My question is if we can set connection string as "server1:6379,server2:6379,server3:6379", cause i need connect each server to view which server is master then modify redis data.

redis cluster

Hello it's Jo (formerly @idetoile, now @devthejo),
I recently tried to use the last version of redis-ui on kubernetes with redis cluster and when I connect, I get an infinite loop like error, and UI is stuck on /main/statistics with cog icon, then after a long time I get Error: The Socket.IO timed out for this request (max 300 seconds) ..., with here is my logs during waiting:

...
2020-12-11 01:00:42 | [P3XRS] [PID: 000007]  socket.io connection-connect P3Xid100000000000000000000000000000 cluster connected
2020-12-11 01:00:42 | [P3XRS] [PID: 000007]  socket.io connection-connect P3Xid100000000000000000000000000000 cluster connected
2020-12-11 01:00:42 | [P3XRS] [PID: 000007]  socket.io connection-connect P3Xid100000000000000000000000000000 cluster connected
2020-12-11 01:00:42 | [P3XRS] [PID: 000007]  socket.io connection-connect P3Xid100000000000000000000000000000 cluster connected
...

here is my /settings/.p3xrs-conns.json:

{
  "list": [
    {
      "id": "P3Xid100000000000000000000000000000",
      "name": "cluster",
      "cluster": true,
      "nodes": [
        {
          "id": "P3Xid000000000000000000000000000000",
          "host": "redis-redis-cluster-0.redis-redis-cluster-headless.redis.svc.cluster.local",
          "port": 6379,
          "password": "4fe1502fc513706d11bb9e05a492406e4836867c323b512d52c5bf7d0d95931b"
        },
        {
          "id": "P3Xid000000000000000000000000000001",
          "host": "redis-redis-cluster-1.redis-redis-cluster-headless.redis.svc.cluster.local",
          "port": 6379,
          "password": "4fe1502fc513706d11bb9e05a492406e4836867c323b512d52c5bf7d0d95931b"
        },
        {
          "id": "P3Xid000000000000000000000000000002",
          "host": "redis-redis-cluster-2.redis-redis-cluster-headless.redis.svc.cluster.local",
          "port": 6379,
          "password": "4fe1502fc513706d11bb9e05a492406e4836867c323b512d52c5bf7d0d95931b"
        },
        {
          "id": "P3Xid000000000000000000000000000003",
          "host": "redis-redis-cluster-3.redis-redis-cluster-headless.redis.svc.cluster.local",
          "port": 6379,
          "password": "4fe1502fc513706d11bb9e05a492406e4836867c323b512d52c5bf7d0d95931b"
        },
        {
          "id": "P3Xid000000000000000000000000000004",
          "host": "redis-redis-cluster-4.redis-redis-cluster-headless.redis.svc.cluster.local",
          "port": 6379,
          "password": "4fe1502fc513706d11bb9e05a492406e4836867c323b512d52c5bf7d0d95931b"
        },
        {
          "id": "P3Xid000000000000000000000000000005",
          "host": "redis-redis-cluster-5.redis-redis-cluster-headless.redis.svc.cluster.local",
          "port": 6379,
          "password": "4fe1502fc513706d11bb9e05a492406e4836867c323b512d52c5bf7d0d95931b"
        }
      ]
    }
  ],
  "license": ""
}

For extra information I run a bitnami helm chart for redis cluster.

If you have any idea of what's going on, I'll appreciate any help.
Thanks in advance if you have a little time to spend on this.

unreproducible: uncaughtException TypeError: Cannot read property 'command' of undefined

ay 10 10:53:37 server p3xrs.js[21488]: [P3XRS] 2019/05/10 10:53:37.176 [INFO]   [PID: 021488] socket.io connected FSp2v7Zjv9VyxbazAAGM
May 10 10:53:43 server p3xrs.js[21488]: [P3XRS] 2019/05/10 10:53:43.985 [WARN]   [PID: 021488] shared disconnectRedisIo try
May 10 10:53:43 server p3xrs.js[21488]: [P3XRS] 2019/05/10 10:53:43.986 [INFO]   [PID: 021488] socket.io connection-connect added new socket.id FSp2v7Zjv9VyxbazAAGM to P3Xid7e893a8c561010008cc0b0e71a398b name with localhost test
May 10 10:53:43 server p3xrs.js[21488]: [P3XRS] 2019/05/10 10:53:43.986 [INFO]   [PID: 021488] socket.io connection-connect P3Xid7e893a8c561010008cc0b0e71a398b localhost test connected
May 10 10:53:43 server p3xrs.js[21488]: [P3XRS] 2019/05/10 10:53:43.990 [WARN]   [PID: 021488] socket.io getStreamKeys dbsize 23 count 100
May 10 10:54:14 server p3xrs.js[21488]: [P3XRS] 2019/05/10 10:54:14.822 [WARN]   [PID: 021488] socket.io getStreamKeys dbsize 10000 count 100
May 10 10:54:15 server p3xrs.js[21488]: [P3XRS] 2019/05/10 10:54:15.937 [WARN]   [PID: 021488] socket.io getStreamKeys dbsize 10000 count 100
May 10 10:54:27 server p3xrs.js[21488]: [P3XRS] 2019/05/10 10:54:27.046 [ERROR]  [PID: 021488] { ReplyError: ERR unknown command `ls`, with args beginning with:
May 10 10:54:27 server p3xrs.js[21488]:     at parseError (/var/p3x-redis-ui-server/node_modules/redis-parser/lib/parser.js:179:12)
May 10 10:54:27 server p3xrs.js[21488]:     at parseType (/var/p3x-redis-ui-server/node_modules/redis-parser/lib/parser.js:302:14) command: { name: 'ls', args: [] } }
May 10 10:54:55 server p3xrs.js[21488]: [P3XRS] 2019/05/10 10:54:55.249 [ERROR]  [PID: 021488] { ReplyError: ERR unknown command `ll`, with args beginning with:
May 10 10:54:55 server p3xrs.js[21488]:     at parseError (/var/p3x-redis-ui-server/node_modules/redis-parser/lib/parser.js:179:12)
May 10 10:54:55 server p3xrs.js[21488]:     at parseType (/var/p3x-redis-ui-server/node_modules/redis-parser/lib/parser.js:302:14) command: { name: 'll', args: [] } }
May 10 10:55:01 server p3xrs.js[21488]: [P3XRS] 2019/05/10 10:55:01.177 [ERROR]  [PID: 021488] 5/10/2019, 10:55:01 AM uncaughtException TypeError: Cannot read property 'command' of undefined
May 10 10:46:17 server p3xrs.js[21488]: [P3XRS] 2019/05/10 10:46:17.356 [INFO]   [PID: 021488] socket.io disconnected 0I2fAv9nTdiiOkvJAAGL
May 10 10:53:37 server p3xrs.js[21488]: [P3XRS] 2019/05/10 10:53:37.176 [INFO]   [PID: 021488] socket.io connected FSp2v7Zjv9VyxbazAAGM
May 10 10:53:43 server p3xrs.js[21488]: [P3XRS] 2019/05/10 10:53:43.985 [WARN]   [PID: 021488] shared disconnectRedisIo try
May 10 10:53:43 server p3xrs.js[21488]: [P3XRS] 2019/05/10 10:53:43.986 [INFO]   [PID: 021488] socket.io connection-connect added new socket.id FSp2v7Zjv9VyxbazAAGM to P3Xid7e893a8c561010008cc0b0e71a398b name with localhost test
May 10 10:53:43 server p3xrs.js[21488]: [P3XRS] 2019/05/10 10:53:43.986 [INFO]   [PID: 021488] socket.io connection-connect P3Xid7e893a8c561010008cc0b0e71a398b localhost test connected
May 10 10:53:43 server p3xrs.js[21488]: [P3XRS] 2019/05/10 10:53:43.990 [WARN]   [PID: 021488] socket.io getStreamKeys dbsize 23 count 100
May 10 10:54:14 server p3xrs.js[21488]: [P3XRS] 2019/05/10 10:54:14.822 [WARN]   [PID: 021488] socket.io getStreamKeys dbsize 10000 count 100
May 10 10:54:15 server p3xrs.js[21488]: [P3XRS] 2019/05/10 10:54:15.937 [WARN]   [PID: 021488] socket.io getStreamKeys dbsize 10000 count 100
May 10 10:54:27 server p3xrs.js[21488]: [P3XRS] 2019/05/10 10:54:27.046 [ERROR]  [PID: 021488] { ReplyError: ERR unknown command `ls`, with args beginning with:
May 10 10:54:27 server p3xrs.js[21488]:     at parseError (/var/p3x-redis-ui-server/node_modules/redis-parser/lib/parser.js:179:12)
May 10 10:54:27 server p3xrs.js[21488]:     at parseType (/var/p3x-redis-ui-server/node_modules/redis-parser/lib/parser.js:302:14) command: { name: 'ls', args: [] } }
May 10 10:54:55 server p3xrs.js[21488]: [P3XRS] 2019/05/10 10:54:55.249 [ERROR]  [PID: 021488] { ReplyError: ERR unknown command `ll`, with args beginning with:
May 10 10:54:55 server p3xrs.js[21488]:     at parseError (/var/p3x-redis-ui-server/node_modules/redis-parser/lib/parser.js:179:12)
May 10 10:54:55 server p3xrs.js[21488]:     at parseType (/var/p3x-redis-ui-server/node_modules/redis-parser/lib/parser.js:302:14) command: { name: 'll', args: [] } }
May 10 10:55:01 server p3xrs.js[21488]: [P3XRS] 2019/05/10 10:55:01.177 [ERROR]  [PID: 021488] 5/10/2019, 10:55:01 AM uncaughtException TypeError: Cannot read property 'command' of undefined
May 10 10:55:01 server p3xrs.js[21488]:     at Redis.exports.returnError (/var/p3x-redis-ui-server/node_modules/ioredis/built/redis/parser.js:36:20)
May 10 10:55:01 server p3xrs.js[21488]:     at JavascriptRedisParser.returnError (/var/p3x-redis-ui-server/node_modules/ioredis/built/redis/parser.js:20:19)
May 10 10:55:01 server p3xrs.js[21488]:     at JavascriptRedisParser.execute (/var/p3x-redis-ui-server/node_modules/redis-parser/lib/parser.js:542:14)
May 10 10:55:01 server p3xrs.js[21488]:     at Socket.<anonymous> (/var/p3x-redis-ui-server/node_modules/ioredis/built/redis/event_handler.js:107:26)
May 10 10:55:01 server p3xrs.js[21488]:     at Socket.emit (events.js:193:13)
May 10 10:55:01 server p3xrs.js[21488]:     at addChunk (_stream_readable.js:295:12)
May 10 10:55:01 server p3xrs.js[21488]:     at readableAddChunk (_stream_readable.js:276:11)
May 10 10:55:01 server p3xrs.js[21488]:     at Socket.Readable.push (_stream_readable.js:231:10)
May 10 10:55:01 server p3xrs.js[21488]:     at TCP.onStreamRead (internal/stream_base_commons.js:150:17)
May 10 10:55:01 server systemd[1]: p3x-redis-ui-example.service: Main process exited, code=exited, status=1/FAILURE
May 10 10:55:01 server systemd[1]: p3x-redis-ui-example.service: Failed with result 'exit-code'.

UI freezes when opening a large Hashset

Hi,
I've noticed that UI will freeze on large Hashsets (mine was about 5000k) when I try to click and check the values.
I tried to downsize the paging settings but it doesn't make any difference.
I think values in Hashsets (UI) don't support paging and it tried to load all keys.
Will be a fix for this in the future?
Tested on browser and electron.
Thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.