Join 4,000+ others and never miss out on new tips, tutorials, and more.
4.x is outdated, please check the latest version 25.x
Latest version:
pecl install openswoole-25.2.0
This is a Redis
implementaion of ConnectionPool
.
Connection pool is used to reduce the TCP
reconnect overhead, can be used to increase the application performance.
You can use the build-in RedisPool
to manage a pool of connection to database servers or remote services.
Swoole\Database\RedisPool->__construct
Swoole\Database\RedisPool->make
Swoole\Database\RedisPool->fill
Swoole\Database\RedisPool->get
Swoole\Database\RedisPool->put
Swoole\Database\RedisPool->close
<?php
declare(strict_types=1);
use Swoole\Database\RedisConfig;
use Swoole\Database\RedisPool;
use Swoole\Runtime;
const N = 10;
Runtime::enableCoroutine();
Co\run(function () {
$pool = new RedisPool((new RedisConfig)
->withHost('127.0.0.1')
->withPort(6379)
->withAuth('')
->withDbIndex(0)
->withTimeout(1)
);
for ($n = N; $n--;) {
go(function () use ($pool) {
$redis = $pool->get();
$result = $redis->set('foo', 'bar');
if (!$result) {
throw new RuntimeException('Set failed');
}
$result = $redis->get('foo');
if ($result !== 'bar') {
throw new RuntimeException('Get failed');
}
$pool->put($redis);
});
}
});