Продолжаем мучать "тестовый стенд".
Ставим редис:
cd /usr/ports/databases/redis
make
make install
make clean
Прописываем его в /etc/rc.conf:
redis_enable="YES"
Копируем конфиг:
cp /usr/local/etc/redis.conf.sample /usr/local/etc/redis.conf
В конфиге прописываем:
daemonize yes # запускать как демона
port 6380 # слушать порт
bind 127.0.0.1 # localhost
maxmemory 64mb # лимитирование по памяти
maxmemory-policy volatile-lru # правило освобождения памяти
Загружаем расширение для php:
wget https://github.com/nicolasff/phpredis/archive/master.zip
Устанавливаем его:
unzip master.zip
cd phpredis-master
phpize
./configure
make
make install
Прописываем в /usr/local/etc/php/extensions.ini (не забыв его скопировать в папку с расширениями, если это нужно. Куда был положен файл redis.so будет указано после выполнения команды make install):
extension=redis.so
Перезапускаем apache:
/usr/local/sbin/apachectl restart
Запускаем редис:
/usr/local/etc/rc.d/redis start
Скрипт для проверки:
<?php $redis = new Redis(); $redis->connect('127.0.0.1', 6380); $time_start = microtime(true); for($i=0;$i<1000000;$i++) { $redis->set('key' . $i, 'MyTestString'); } echo "Wrire: " . ( microtime(true) - $time_start ) . " seconds\n"; $time_start = microtime(true); for($i=0;$i<1000000;$i++) { $redis->get('key'. $i); } echo "Read: " . ( microtime(true) - $time_start ) . " seconds\n"; ?>
Время выполнения:
Wrire: 59.792583942413 seconds
Read: 58.495797872543 seconds
Меняем настройки на unix сокет:
#port 6380
#bind 127.0.0.1
unixsocket /tmp/redis.sock
unixsocketperm 777
Перезапускаем редис:
/usr/local/etc/rc.d/redis restart
В скрипте меняем настройки подключения:
$redis->connect('/tmp/redis.sock', 0);
Получаем время:
Wrire: 39.835215091705 seconds
Read: 41.026021003723 seconds
Резюмируя увиденное при использовании расширений для php на очень простой задаче. Если слушать порт, то редис несколько продуктивнее memcache. Для unixsocket результаты примерно одинаковы. Но с учетом того, что у редиса побольше возможностей, думаю стоит остановиться на нем, хотя каждый решает для себя сам
В общем хватит на сегодня.
shutdown -p now