Simple web interface to manage Redis databases.

Overview

phpRedisAdmin

phpRedisAdmin is a simple web interface to manage Redis databases. It is released under the Creative Commons Attribution 3.0 license. This code is being developed and maintained by Erik Dubbelboer.

You can send comments, patches, questions here on github or to [email protected].

Example

You can find an example database at http://dubbelboer.com/phpRedisAdmin/

Installing/Configuring

To install phpRedisAdmin through composer you need to execute the following commands:

curl -s http://getcomposer.org/installer | php
php composer.phar create-project -s dev erik-dubbelboer/php-redis-admin path/to/install

You may also want to copy includes/config.sample.inc.php to includes/config.inc.php and edit it with your specific redis configuration.

Instead of using composer, you can also do a manual install using:

git clone https://github.com/ErikDubbelboer/phpRedisAdmin.git
cd phpRedisAdmin
git clone https://github.com/nrk/predis.git vendor

Docker Image

A public phpRedisAdmin Docker image is available on Docker Hub automatically built from latest source. The file includes/config.environment.inc.php is used as the configuration file to allow environment variables to be used as configuration values. Example:

docker run --rm -it -e REDIS_1_HOST=myredis.host -e REDIS_1_NAME=MyRedis -p 80:80 erikdubbelboer/phpredisadmin

Also, a Docker Compose manifest with a stack for testing and development is provided. Just issue docker-compose up --build to start it and browse to http://localhost. See docker-compose.yml file for configuration details.

Environment variables summary

  • REDIS_1_HOST - define host of the Redis server
  • REDIS_1_NAME - define name of the Redis server
  • REDIS_1_PORT - define port of the Redis server
  • REDIS_1_AUTH - define password of the Redis server
  • ADMIN_USER - define username for user-facing Basic Auth
  • ADMIN_PASS - define password for user-facing Basic Auth

TODO

  • Encoding support for editing
  • Javascript sorting of tables
  • Better error handling
  • Move or Copy key to different server
  • Importing JSON
  • JSON export with seperate objects based on your seperator

Credits

Icons by http://p.yusukekamiyamane.com/ (https://github.com/yusukekamiyamane/fugue-icons/tree/master/icons-shadowless)

Favicon from https://github.com/antirez/redis-io/blob/master/public/images/favicon.png

Comments
  • Add Docker support

    Add Docker support

    • Dockerfile initial version
    • Environment-sourcing config file

    How to test:

    $ docker run -d --name=redistest redis redis-server
    $ docker run -d --name=phpredisadmin -e ADMIN_USER=admin -e=ADMIN_PASS=admin -e REDIS_1_HOST=redis --link=redistest:redis -p 80:80 pataquets/phpredisadmin
    

    After these, browse to http://localhost

    If merged, I can help with either:

    • Setting up a public Docker Hub image
    • Link upstream Github repo to my Docker Hub account

    With any of these, an 'automated build' can be set up on Docker Hub that will trigger an image rebuild on each Github commit.

    opened by pataquets 23
  • Questionable Feature Request: Handle serialization?

    Questionable Feature Request: Handle serialization?

    I use binary serialization in redis.

    It has the disadvantage that you need to handle more complex data than just strings but a number of serious advantages as well over using JSON and just making the string editable.

    Advantages:

    • Faster.
    • Uses much less memory.
    • Preserves types accurately (arrays).
    • Does not have problems with character sets/binary data.

    My work around for this is to make my encoder json -> igbinary and the decoder vice versa.

    You could use the same solution with the serializer functions configurable (msgpack, igbinary, php, json, json pretty, etc).

    This loses a key advantage of type preservation.

    The catch 22 is that for the front end it would really want to be in JSON anyway so you still bump into those problems with PHP and indeterminate array type or JSON/JS and their charset issues. Though at the very least using a common JSON editing library would be nice.

    On a side note, you have ?> at the end of files and then white space. This forces the use of output buffering even when it may not be necessary which increases memory usage a lot.

    It is best to just not have the closing tag in include files even if you intend not to have a new line. Some tools like a new line at the end so people tend to add one as good practice. You cannot do this with ?> at the end of an include file without the ob.

    Another side note, my json solution works well enough, though in your display you do not use white space pre.

    Finally, I have some massive serialized objects but there is no way to effectively deal with these here.

    It looks like early work but the first tool I've found where I am able to edit redis that is igbinary backed with relative easy and minimal setup cost.

    opened by joeyhub 16
  • Uncaught RangeError: Maximum call stack size exceeded

    Uncaught RangeError: Maximum call stack size exceeded

    I have a javascript error : Uncaught RangeError: Maximum call stack size exceeded when I load a server with more than 60k keys in a subset

    I think the javascript engine goes mad, the error pops out of jquery.js file

    opened by jrmgx 11
  • Cannot Edit Keys Anymore

    Cannot Edit Keys Anymore

    Hi please help me with this. It's quite urgent.

    For some reason, I can no longer edit keys with phpRedisAdmin. I log in fine with my usual credentials , however I come to edit a key, it brings the login prompt again and if I enter my usual credentials again, it doesn't work.

    It's like my admin account has turned into read-only mode. Is this even possible?

    opened by Supersta 11
  • dependence predis is deprecated

    dependence predis is deprecated

    Hi, I wondered why you don’t have streams (5.0) support. I cloned the repo and thought to add it myself, but found that some methods do not work, for example

    case 'stream':
    	      echo $fullkey;
                  $len = $redis->xLen($fullkey);
                  break;
    

    Fatal error: Uncaught Predis\ClientException: Command 'XLEN' is not a registered Redis command.

    I see composer dependence "predis/predis": "1.1.x-dev" (2017-07-12) and https://github.com/phpredis/phpredis (newer). They abandoned the composer. Now it is distributed as a compiled library. Please replace the composer dependency in the project with the compiled one so that you can develop the project further, working with the latest redis.

    Future improvement 
    opened by jenokizm 10
  • keys that end with the separator show up as folder and <empty>

    keys that end with the separator show up as folder and

    Sorry that I've been opening a few issues over the past few days. But it means that someone is using your software. ;-)

    When I create a key called test:, it looks like this:

    image

    It has something to do with the way the namespaces are built. Maybe you have a quick fix, since you wrote the code in the first place.

    opened by tessus 9
  • docker image not supply setting redis password

    docker image not supply setting redis password

    hi , i want to use the project docker image , but my redis has password , i reading the config.sample.inc.php, and did fount anywhere to setting my password . it that say the docker image not supply the function ? and what should i do to add the function for docker image, thank you

    opened by guodidi 9
  • Unable to delete keys with comma(s)

    Unable to delete keys with comma(s)

    My keys list:

    изображение

    I select Articles.All(rid=11,did=14,page=12) and press "Delete selected"

    Nothing changed, but I recieved:

    изображение

    Select All -> Delete selected broken too with same situation on screen above

    Click on key

    изображение

    and click on red cross works, with answer:

    изображение (just as planned)

    P.S. Keys with (, ) and , allowed by redis:

    изображение

    opened by KarelWintersky 7
  • Request: Refresh keys without refreshing page/frame

    Request: Refresh keys without refreshing page/frame

    Sometimes I'm looking at a specific set of keys, e.g. 'failed' below, and I want to refresh/update the values within they key without refreshing the whole page.

    image

    Would it be possible to have a refresh button next to the key name and ajax them in? Or assign an anchor tag to each key, and have the refresh button refresh the page but jump down to the anchor you clicked and auto-expand the node?

    (This is really just an ease-of-use suggestion; otherwise I am finding this to be a really handy tool)

    opened by deancsmith 7
  • Uncaught Predis\Connection\ConnectionException: Error while reading line from the server.

    Uncaught Predis\Connection\ConnectionException: Error while reading line from the server.

    I'm running phpRedisAdmin through an ssh tunnel to one of our work environments. MacOS : 11.6.5 Redis: 6.2.6 Redis there is configured to use port 6380, so I ran the following docker command:

    docker run --rm \
      -p 8092:80 \
      -e NODE_TLS_REJECT_UNAUTHORIZED=0 \
      -e REDIS_1_HOST=host.docker.internal \
      -e REDIS_1_NAME=redis \
      -e REDIS_1_PORT=6380 \
      -e REDIS_TLS=true \
      -e REDIS_PASSWORD=$1 \
      erikdubbelboer/phpredisadmin:latest
    

    when I run http://localhost:8092, there's pause and then:

    <br />
    <b>Fatal error</b>:  Uncaught Predis\Connection\ConnectionException: Error while reading line from the server. [tcp://host.docker.internal:6380] in /src/app/vendor/predis/predis/src/Connection/AbstractConnection.php:155
    Stack trace:
    #0 /src/app/vendor/predis/predis/src/Connection/StreamConnection.php(314): Predis\Connection\AbstractConnection-&gt;onConnectionError('Error while rea...')
    #1 /src/app/vendor/predis/predis/src/Connection/AbstractConnection.php(120): Predis\Connection\StreamConnection-&gt;read()
    #2 /src/app/vendor/predis/predis/src/Connection/AbstractConnection.php(112): Predis\Connection\AbstractConnection-&gt;readResponse(Object(Predis\Command\KeyScan))
    #3 /src/app/vendor/predis/predis/src/Client.php(331): Predis\Connection\AbstractConnection-&gt;executeCommand(Object(Predis\Command\KeyScan))
    #4 /src/app/vendor/predis/predis/src/Client.php(314): Predis\Client-&gt;executeCommand(Object(Predis\Command\KeyScan))
    #5 /src/app/index.php(14): Predis\Client-&gt;__call('scan', Array)
    #6 {main}
      thrown in <b>/src/app/vendor/predis/predis/src/Connection/AbstractConnection.php</b> on line <b>155</b><br />
    
    

    Not sure where I should start looking for a solution to this issue.

    opened by JESii 6
  • Serialization display problems

    Serialization display problems

    @erikdubbelboer I use the following code serialization, but view 'null'

    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    
    import net.sf.ehcache.CacheException;
    import org.nustaq.serialization.FSTObjectInput;
    import org.nustaq.serialization.FSTObjectOutput;
    
    /**
     * 使用 FST 实现序列化
     * @author winterlau
     */
    public class FSTSerializer implements Serializer {
    
        @Override
        public String name() {
            return "fst";
        }
    
        @Override
        public byte[] serialize(Object obj) throws IOException {
            ByteArrayOutputStream out = null;
            FSTObjectOutput fout = null;
            try {
                out = new ByteArrayOutputStream();
                fout = new FSTObjectOutput(out);
                fout.writeObject(obj);
                fout.flush();
                return out.toByteArray();
            } finally {
                if(fout != null)
                try {
                    fout.close();
                } catch (IOException e) {}
            }
        }
    
        @Override
        public Object deserialize(byte[] bytes) throws IOException {
            if(bytes == null || bytes.length == 0)
                return null;
            FSTObjectInput in = null;
            try {
                in = new FSTObjectInput(new ByteArrayInputStream(bytes));
                return in.readObject();
            } catch (ClassNotFoundException e) {
                throw new CacheException(e);
            } finally {
                if(in != null)
                try {
                    in.close();
                } catch (IOException e) {}
            }
        }
    
    }
    
    opened by gumutianqi 6
  • phpRedisAdmin does not support arm64v8 architectures

    phpRedisAdmin does not support arm64v8 architectures

    The following error occurred in the Dcoker run:

    WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested exec /sbin/tini: exec format error

    opened by GeekDot 4
  • use pagination to speed up

    use pagination to speed up

    if there is thousands of keys in redis, web frontend will load all data from backend, which is slow and stupid.

    1,use pagination on keys which have the same prefix 2,actually user do not need to load all keys on the left side, so only load keys that user choose.

    phpredisadmin is difficult to use in develop environment because it load all keys!

    Future improvement 
    opened by gouchaoer 7
Releases(v1.17.1)
Owner
Erik Dubbelboer
I don't fork unless I make a pull request.
Erik Dubbelboer
This web app aims to manage alumnus databases.

Aplikasi Database Alumni Aplikasi berbasis web ini bertujuan untuk melakukan pendataan alumni. Aplikasi ini dibuat menggunakan framework CodeIgniter d

Ardi Cahyono 1 Nov 24, 2021
Web interface to manage multiple instance of lxd

LXDMosaic ?? Share your feedback ?? More input required ?? Roadmap ??️ Docs ?? Get Started Prepare LXD Setup LXD and ensure LXD is available over the

null 435 Nov 26, 2022
A simple wrapper for PHP Intervention Library to provide a more simple interface and convenient way to convert images to webp

This package is a simple wrapper for PHP Intervention Library to provide a more simple interface and convenient way to convert images to webp - next generation format - extension, and resize them to render only needed sizes.

eyad hamza 18 Jun 28, 2022
Lookup IPs (IPv4 + IPv6), store them in MySQL and Redis + check if the IP is a VPN/Proxy

Lookup IPs (IPv4 + IPv6), store them in MySQL and Redis + check if the IP is a VPN/Proxy

null 2 Nov 18, 2022
A web interface for MySQL and MariaDB

phpMyAdmin A web interface for MySQL and MariaDB. https://www.phpmyadmin.net/ Code status Download You can get the newest release at https://www.phpmy

phpMyAdmin 6.3k Dec 1, 2022
amadeus-ws-client: PHP client for the Amadeus GDS SOAP Web Service interface

amadeus-ws-client: PHP client for the Amadeus GDS SOAP Web Service interface This client library provides access to the Amadeus GDS SOAP Web Service i

Amadeus Benelux 164 Nov 18, 2022
MOFHY Lite is a free web hosting management system to manage MOFH hosting accounts and SSL certificates.

MOFHY Lite is a free of cost MOFH clientarea for account management and support services with free ssl service. It have easy to use feature

Mahtab Hassan 16 Oct 18, 2022
Open Source Voucher Management System is a web application for manage voucher. used PHP with Laravel Framework and use MySQL for Database.

Voucher Management System is a web application for manage voucher. You can create and manage your voucher. Voucher Management System is used PHP with Laravel Framework and use MySQL for Database.

Artha Nugraha Jonar 34 Sep 17, 2022
MOFHY Lite is a free web hosting management system to manage MOFH hosting accounts and SSL certificates.

MOFHY Lite MOFHY LITE is a priceless MyOwnFreeHost Client Area for account management, ticket support system and a free ssl service. It has easy to us

Santiago Rodríguez 6 Dec 28, 2021
A PHP based web application to help manage your postmortems

morgue a safe place for all your postmortem data Overview This is a PHP based web application to help manage your postmortems. It has a pluggable feat

Etsy, Inc. 1k Nov 21, 2022
ViMbAdmin project provides a web based virtual mailbox administration system to allow mail administrators to easily manage domains, mailboxes and aliases.

ViMbAdmin project (vim-be-admin) provides a web based virtual mailbox administration system to allow mail administrators to easily manage domains, mailboxes and aliases.

Open Solutions 461 Nov 15, 2022
TinyFileManager is web based file manager and it is a simple, fast and small file manager with a single file, multi-language ready web application

TinyFileManager is web based file manager and it is a simple, fast and small file manager with a single file, multi-language ready web application for storing, uploading, editing and managing files and folders online via web browser. The Application runs on PHP 5.5+, It allows the creation of multiple users and each user can have its own directory and a build-in support for managing text files with cloud9 IDE and it supports syntax highlighting for over 150+ languages and over 35+ themes.

Prasath Mani 3.4k Dec 3, 2022
A unified front-end for different queuing backends. Includes a REST server, CLI interface and daemon runners.

PHP-Queue A unified front-end for different queuing backends. Includes a REST server, CLI interface and daemon runners. Why PHP-Queue? Implementing a

CoderKungfu 646 Oct 4, 2022
Switch the DokuWiki interface language according to the accept-language request header

Switch the DokuWiki interface language according to the accept-language request header

CosmoCode GmbH 1 Jan 4, 2022
Interface Network is an application about social media

Interface Network is an application about social media

Noval 3 Apr 20, 2022
Roundcube Webmail is a browser-based multilingual IMAP client with an application-like user interface.

Roundcube Webmail roundcube.net ATTENTION This is just a snapshot from the GIT repository and is NOT A STABLE version of Roundcube. It's not recommend

Roundcube Webmail Project 4.7k Dec 4, 2022
A great looking and easy-to-use photo-management-system you can run on your server, to manage and share photos.

Lychee A great looking and easy-to-use photo-management-system. Since the 1st of April 2018 this project has moved to it's own Organisation (https://g

Tobias Reich 6.1k Nov 30, 2022
PHP backend Scripts to add and Manage Live tv Streaming android app

PHP Backend to Manage Live TV Streaming Android app Follow Given Steps to Setup Local Environment to run this php Script Setting Up Local Environment

Bikash Thapa 11 May 10, 2022
Dolibarr ERP & CRM is a modern software package that helps manage your organization's activity (contacts, suppliers, invoices, orders, stocks, agenda…).

Dolibarr ERP CRM is a modern software package to manage your company or foundation activity (contacts, suppliers, invoices, orders, stocks, agenda, accounting, ...). It is open source software written in PHP and designed for small and medium businesses, foundations and freelancers. You can freely install, use and distribute it as a standalone application or as a web application to use it from every internet access and media.

Dolibarr ERP & CRM 3.6k Nov 25, 2022