Download the PHP package clue/redis-server without Composer
On this page you can find all versions of the php package clue/redis-server. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package redis-server
clue/redis-server
A Redis server implementation in pure PHP. Not for the faint-hearted.
Note: This project is in early alpha stage! Feel free to report any issues you encounter.
Introduction
Motivation
Redis is a fast in-memory key-value database. This project aims to provide a simple alternative to the official Redis server implementation if installing it is not an option.
Why would I use this project if I already have the official Redis server installed? Simply put, you wouldn't. Ever.
Project goals
- ✓ Implement an in-memory datastore using the Redis protocol
- ✓ Compatiblity with common Redis clients and tools
- ✓ redis-cli
- ✓ redis-benchmark
- ✓ SOLID and modern design, tested and modular components
- ✗ Implement all commands (see below for list of supported commands)
Supported commands
Eventually, this project aims to replicate all commands of the official Redis server implementation and their exact behavior.
So far, the following list of commands shows what's already implemented:
- Keys
- DEL
- EXISTS
- EXPIRE
- EXPIREAT
- KEYS
- PERSIST
- PEXPIRE
- PEXPIREAT
- PTTL
- RANDOMKEY
- RENAME
- RENAMENX
- SORT
- TTL
- TYPE
- Strings
- APPEND
- DECR
- DECRBY
- GET
- GETRANGE
- GETSET
- INCR
- INCRBY
- MGET
- MSET
- MSETNX
- PSETEX
- SET
- SETEX
- SETNX
- SETRANGE
- STRLEN
- Lists
- LINDEX
- LLEN
- LPOP
- LPUSH
- LPUSHX
- LRANGE
- RPOP
- RPOPLPUSH
- RPUSH
- RPUSHX
- Connection
- ECHO
- PING
- QUIT
- SELECT
- Server
- AUTH
- CLIENT KILL
- CLIENT LIST
- CLIENT GETNAME
- CLIENT SETNAME
- CONFIG GET
- CONFIG SET
- DBSIZE
- FLUSHALL
- FLUSHDB
- SHUTDOWN
- TIME
For details, refer to the excellent official documentation of Redis commands.
All available commands are expected to behave just like their counterparts in Redis v2.6+, unless otherwise noted. If you find a command to misbehave, don't hesitate to file a bug.
Obviously, this list is incomplete in that it does not include every command supported by Redis. If you find a command is missing, please submit a PR :)
Benchmarking performance
As usual, just about every benchmark is biased - you've been warned.
You can use the redis-benchmark
script that is included when installing the
official Redis server.
Some benchmarking results:
So depending on your configuration, expect the original implementation to be 2x to 5x as fast. Some thoughts that have a significant effect on the performance:
- HHVM is significantly faster than standard PHP (2.5x)
- Installing
ext-libevent
(not available for HHVM unfortunately) will significantly improve the performance for concurrent connections. This is not a hard requirement, butredis-benchmark
defaults to 50 concurrent connections which slows down the whole server process due to relying on astream_select()
call otherwise. - The
bin/redis-server.php
includes a$debug
flag (which defaults tofalse
). Disabled debugging output significantly improves performance (3x) - The benchmark should not be run from within a virtual machine. Running this on the host machine instead shows significant improvements (8x). For comparision, the same applies to official Redis, although it shows a smaller impact (3x).
Quickstart example
Once installed, you can start the Redis server by running the provided bin file:
Alternatively, you can also use this project as a lib in order to build your own server like this:
Install
The recommended way to install this library cloning this repo and installing its dependencies through composer. New to composer?
Docker
This project is also available as a docker image. Using the clue/php-redis-server image is as easy as running this:
License
MIT
All versions of redis-server with dependencies
react/promise Version ~1.0|~2.0
react/socket Version 0.3.*|0.4.*
react/event-loop Version 0.3.*|0.4.*
clue/redis-protocol Version 0.3.*
evenement/evenement Version ~1.0|~2.0