digitorum.ru

Как меня найти

Профиль

icq: 4415944

Пробуем Redis (установка, настройка) под FreeBSD

nix, php, redis

Продолжаем мучать "тестовый стенд".

Ставим редис:

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 

 

 

Возможно будет интересно: