Monday, September 20th 2010, 8:24pm
Tags
memcached,
nosql,
redis
Abstract
In diesem Artikel werden die PHP Clients von Redis und Memcached gegeneinander verglichen.
Article
Benchmarks wurden jeweils mit folgendem Code durchgefürt. Wurden also
explizit über den Apachen gejat.
|
Bash
|
1
|
time `i=1; while [ $i -le 1000 ]; do wget -q -O /dev/null "http://localhost/Memcached/exec-set.php?argv[1]=$i&argv[2]=$i"; let i=$i+1; done`
|
|
PHP Quellcode
|
1
2
3
4
5
6
7
|
$cluster = new Memcached();
$cluster->addServers(array(
array('localhost', 11211)
));
$cluster->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true);
$cluster->set($_GET['argv'][1], $_GET['argv'][2]);
|
|
Source code
|
1
2
3
|
real 0m4.900s
user 0m1.330s
sys 0m2.460s
|
|
Source code
|
1
2
3
|
real 0m4.882s
user 0m1.180s
sys 0m2.760s
|
|
PHP Quellcode
|
1
2
3
4
|
$cluster = new Redis();
$cluster->connect('127.0.0.1', 6379);
$cluster->set($_GET['argv'][1], $_GET['argv'][2]);
|
|
Source code
|
1
2
3
|
real 0m5.013s
user 0m1.190s
sys 0m2.440s
|
|
Source code
|
1
2
3
|
real 0m4.396s
user 0m1.250s
sys 0m2.090s
|
|
PHP Quellcode
|
1
2
3
4
5
6
7
8
|
require_once('Predis.php');
$cluster = new Predis\Client(array(
'host' => '127.0.0.1',
'port' => 6379,
'database' => 15
));
$cluster->set($_GET['argv'][1], $_GET['argv'][2]);
|
|
Source code
|
1
2
3
|
real 0m12.884s
user 0m0.960s
sys 0m1.570s
|
|
Source code
|
1
2
3
|
real 0m12.513s
user 0m0.870s
sys 0m1.770s
|
|
PHP Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
|
require_once('library/Rediska.php');
$options = array('servers' => array(
array(
'host' => '127.0.0.1',
'port' => 6379
)
));
$cluster = new Rediska($options);
$cluster->set($_GET['argv'][1], $_GET['argv'][2]);
|
|
Source code
|
1
2
3
|
real 0m10.201s
user 0m1.520s
sys 0m3.400s
|
|
Source code
|
1
2
3
|
real 0m10.218s
user 0m1.940s
sys 0m3.320s
|
Will man auf Performance gehen, kommt man nicht um die C-Implementierungen der Redis Clients herum. Diese sind in der Tat genauso schnell wie Memcached.
Die PHP Implementierung sind trotz aktiviertem APC Caching mit großem Abstand langsamer. Sowohl Rediska als auch Predis bringen über 160 Klassen mit.
Rediska nutzt dagegen ein besseres Autoloading - wohingegen Preis alle Klassen in den Speicher lädt.
Request deletion
report critical content