phpredis
PHP · phpredis 5.3.7 · RESP2
所列测试通过
测试连接设置
Ubuntu 24.04 PHP extension
测试目标:127.0.0.1:6379,用户名 default,测试密码 manual-test-only,默认数据库。该密码只用于一次性的本地测试容器。
已验证操作
- authenticated PING
- SET
- Unicode GET
- missing GET
- binary round trip
- HGET
- MULTI/EXEC
- Lua EVAL
范围限于下方程序中的确切 API 调用与断言。
可执行测试示例
此程序已在隔离 Docker 镜像中执行。它包含多个客户端分支;本页使用下面列出的参数。依赖和编译步骤位于测试目录的 Dockerfile 中。
php "/clients/php-client.php" phpredis查看已执行的完整源代码
<?php
// Run: php php-client.php predis|phpredis. Fixture only.
$library=$argv[1]; $checks=[];
function verify($name,$actual,$expected) {global $checks;if($actual!==$expected)throw new Exception($name.': '.json_encode($actual));$checks[]=$name;}
if($library==='predis') {
require '/clients/vendor/autoload.php';
$client=new Predis\Client(['scheme'=>'tcp','host'=>'127.0.0.1','port'=>6379,'username'=>'default','password'=>'manual-test-only','read_write_timeout'=>5]);
$version=Composer\InstalledVersions::getPrettyVersion('predis/predis');
} else {
$client=new Redis();$client->connect('127.0.0.1',6379,5);$client->auth(['default','manual-test-only']);
$version=phpversion('redis');
}
try {
verify('authenticated PING',(string)$client->ping(),$library==='predis'?'PONG':'1');
$set=$client->set('php:text','Hello 世界');verify('SET',$library==='predis'?(string)$set:$set,$library==='predis'?'OK':true);
verify('Unicode GET',$client->get('php:text'),'Hello 世界');
verify('missing GET',$client->get('php:missing'),$library==='predis'?null:false);
$client->set('php:binary',"\0\xff\r\n");verify('binary round trip',$client->get('php:binary'),"\0\xff\r\n");
$client->hset('php:hash','field','value');verify('HGET',$client->hget('php:hash','field'),'value');
if($library==='predis') {
$values=$client->transaction(function($t){$t->set('php:counter','1');$t->incr('php:counter');});
verify('MULTI/EXEC',$values[1],2);
verify('Lua EVAL',$client->eval("return redis.call('GET',KEYS[1])",1,'php:counter'),'2');
} else {
$values=$client->multi()->set('php:counter','1')->incr('php:counter')->exec();verify('MULTI/EXEC',$values,[true,2]);
verify('Lua EVAL',$client->eval("return redis.call('GET',KEYS[1])",['php:counter'],1),'2');
}
} finally {if($library==='predis')$client->disconnect();else $client->close();}
echo json_encode(['library'=>$library,'version'=>$version,'checks'=>$checks,'status'=>'passed'])."\n";
测试环境与可复现证据
验证时间: 2026-09-21T11:15:27Z · Docker / Linux aarch64 · lavik 0.1.0-beta.1
存储与连接: io_uring · 临时文件、2 个工作线程、单机、明文 TCP、密码认证。此测试不衡量 NVMe 性能。
固定源码: 3955b98d43b312324aa8d52775df52cfb111c0d0
二进制 SHA-256: 8306b37ddf05023f85166a6aa2192b7084757e8defd342b602e6470244aca887
镜像: sha256:fd13690a1931b8abb31b1866baa2a08c7c38e6df93aa78883321d1d3c1cddd00