Memcached VS Redis - Vergleich der PHP Clients

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • In diesem Artikel werden die PHP Clients von Redis und Memcached gegeneinander verglichen.
    Benchmarks wurden jeweils mit folgendem Code durchgefürt. Wurden also
    explizit über den Apachen gejat.

    Quellcode

    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`


    php5-memcached (1.0.0-1build1)

    Quellcode

    1. $cluster = new Memcached();
    2. $cluster->addServers(array(
    3. array('localhost', 11211)
    4. ));
    5. $cluster->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true);
    6. $cluster->set($_GET['argv'][1], $_GET['argv'][2]);


    sets

    Quellcode

    1. real 0m4.900s
    2. user 0m1.330s
    3. sys 0m2.460s


    gets

    Quellcode

    1. real 0m4.882s
    2. user 0m1.180s
    3. sys 0m2.760s


    phpredis (1.0, 2010-09-17)

    Quellcode

    1. $cluster = new Redis();
    2. $cluster->connect('127.0.0.1', 6379);
    3. $cluster->set($_GET['argv'][1], $_GET['argv'][2]);


    sets

    Quellcode

    1. real 0m5.013s
    2. user 0m1.190s
    3. sys 0m2.440s


    gets

    Quellcode

    1. real 0m4.396s
    2. user 0m1.250s
    3. sys 0m2.090s


    Predis (0.7.0-dev)

    Quellcode

    1. require_once('Predis.php');
    2. $cluster = new Predis\Client(array(
    3. 'host' => '127.0.0.1',
    4. 'port' => 6379,
    5. 'database' => 15
    6. ));
    7. $cluster->set($_GET['argv'][1], $_GET['argv'][2]);


    sets

    Quellcode

    1. real 0m12.884s
    2. user 0m0.960s
    3. sys 0m1.570s


    gets

    Quellcode

    1. real 0m12.513s
    2. user 0m0.870s
    3. sys 0m1.770s


    Rediska (0.5.0)

    Quellcode

    1. require_once('library/Rediska.php');
    2. $options = array('servers' => array(
    3. array(
    4. 'host' => '127.0.0.1',
    5. 'port' => 6379
    6. )
    7. ));
    8. $cluster = new Rediska($options);
    9. $cluster->set($_GET['argv'][1], $_GET['argv'][2]);
    Alles anzeigen


    sets

    Quellcode

    1. real 0m10.201s
    2. user 0m1.520s
    3. sys 0m3.400s


    gets

    Quellcode

    1. real 0m10.218s
    2. user 0m1.940s
    3. sys 0m3.320s


    Ergebnisse

    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.

    1.938 mal gelesen