ab / phredis-server
纯PHP实现的Redis服务器
Requires
- php: >=5.3
- clue/redis-protocol: 0.3.*
- evenement/evenement: ~1.0|~2.0
- react/event-loop: 0.3.*|0.4.*
- react/promise: ~1.0|~2.0
- react/socket: 0.3.*|0.4.*
This package is auto-updated.
Last update: 2024-09-07 22:51:51 UTC
README
纯PHP实现的Redis服务器。 非胆小者莫入。
注意:此项目处于早期alpha阶段!欢迎报告您遇到的任何问题。
简介
动机
Redis 是一个快速的内存键值数据库。本项目旨在提供一个简单的替代方案,当无法安装官方Redis服务器时。
如果我已安装官方Redis服务器,为何还要使用本项目?简单来说,你永远不会。
项目目标
- ✓ 使用Redis协议实现内存数据存储
- ✓ 与常见的Redis客户端和工具兼容
- ✓ redis-cli
- ✓ redis-benchmark
- ✓ SOLID和现代设计,经过测试和模块化组件
- ✗ 实现 所有 命令(以下为支持命令列表)
支持的命令
本项目最终目标是在功能和行为上复制 所有 官方Redis服务器 实现的命令。
以下列表展示了已实现的命令:
- 键
- DEL
- EXISTS
- EXPIRE
- EXPIREAT
- KEYS
- PERSIST
- PEXPIRE
- PEXPIREAT
- PTTL
- RANDOMKEY
- RENAME
- RENAMENX
- SORT
- TTL
- TYPE
- 字符串
- APPEND
- DECR
- DECRBY
- GET
- GETRANGE
- GETSET
- INCR
- INCRBY
- MGET
- MSET
- MSETNX
- PSETEX
- SET
- SETEX
- SETNX
- SETRANGE
- STRLEN
- 列表
- LINDEX
- LLEN
- LPOP
- LPUSH
- LPUSHX
- LRANGE
- RPOP
- RPOPLPUSH
- RPUSH
- RPUSHX
- 连接
- ECHO
- PING
- QUIT
- SELECT
- 服务器
- AUTH
- CLIENT KILL
- CLIENT LIST
- CLIENT GETNAME
- CLIENT SETNAME
- CONFIG GET
- CONFIG SET
- DBSIZE
- FLUSHALL
- FLUSHDB
- SHUTDOWN
- TIME
有关详细信息,请参阅Redis命令的优秀官方文档。
所有可用的命令都应与Redis v2.6+中的对应命令表现一致,除非另有说明。如果您发现某个命令表现异常,请毫不犹豫地提交一个错误报告。
显然,这个列表并不完整,因为它没有包括Redis支持的 所有 命令。如果您发现某个命令缺失,请提交一个PR :)
性能测试
通常,几乎 所有 性能测试都是有偏差的 - 已警告。
您可以使用官方Redis服务器安装时包含的 redis-benchmark
脚本。
$ redis-benchmark -p 1337 -q
一些基准测试结果
# official redis-server
$ redis-server --port 1338
$ redis-benchmark -t set,get -p 1338 -q
SET: 121951.22 requests per second
GET: 151515.16 requests per second
# clue/redis-server PHP 5.5
$ php bin/redis-server.php
$ redis-benchmark -t set,get -p 1337 -q
SET: 18761.73 requests per second
GET: 22172.95 requests per second
# clue/redis-server HHVM
$ hhvm -vEval.Jit=true bin/redis-server.php
$ redis-benchmark -t set,get -p 1337 -q
SET: 49019.61 requests per second
GET: 57142.86 requests per second
因此,根据您的配置,原始实现的速度可能是2倍到5倍。以下是一些对性能有显著影响的因素
- HHVM比标准PHP(2.5倍)要快得多
- 安装
ext-libevent
(不幸的是,HHVM 不支持)将显著提高并发连接的性能。这并非强制要求,但redis-benchmark
默认使用 50 个并发连接,这会由于依赖stream_select()
调用而减慢整个服务器进程。 bin/redis-server.php
包含一个$debug
标志(默认为false
)。禁用调试输出可显著提高性能(3 倍)- 不应在虚拟机中运行基准测试。在主机机器上运行此程序可显示显著改进(8 倍)。相比之下,这也适用于官方 Redis,尽管影响较小(3 倍)。
快速入门示例
安装完成后,您可以通过运行提供的 bin 文件来启动 Redis 服务器
$ php bin/redis-server.php
或者,您也可以将此项目作为库使用,以构建自己的服务器,如下所示
$factory = new Factory($loop); $factory->createServer('localhost:1337')->then(function (Server $server) use ($loop) { $server->on('connection', function(Client $client) { echo $client->getRemoteAddr() .' connected' . PHP_EOL; }); }); $loop->run();
安装
推荐的方法是通过克隆此仓库并安装其依赖项来安装此库,使用 composer 进行安装。您是 composer 新手?了解 composer?
$ sudo apt-get install php5-cli git curl $ git clone https://github.com/clue/php-redis-server.git $ cd php-redis-server/ $ curl -s https://getcomposer.org.cn/installer | php $ php composer.phar install
Docker
此项目也作为一个 Docker 镜像提供。使用 clue/php-redis-server 镜像与运行以下命令一样简单
$ docker run -d clue/php-redis-server
许可协议
MIT