Redis — это хранилище данных типа ключ-значение, подробнее о нем можно почитать в Wiki. Основная особенность Redis в том, что он хранит все данные в оперативной памяти. От этого увеличивается быстродействие, но соответственно уменьшается объем свободной памяти =). Конечно, если свободная память заканчивается, он сбрасывает данные на диск, но лучше до такого не доводить, ибо это не лучшая его сторона.
Для чего нам может понадобится Redis? Например, для хранения в нем пользовательских сессий. Это, обычно, необходимо, если у вас несколько отдельных приложений с общей системой авторизации (продукты компаний Google, Яндекс) или несколько серверов с одним приложением (Вконтакте, Facebook).
Установка в Ubuntu
$ sudo apt-get install redis-server
Все, радуйтесь =).
Установка в CentOS
Насколько я знаю пакет есть в репозиториях, но лучше скомпилировать самому. Для начала проверим все ли необходимые пакеты установлены:
$ yum groupinstall 'Development Tools' $ yum install wget
После установки необходимого набора для компиляции, качаем Redis и устанавливаем его:
$ cd /tmp $ wget http://download.redis.io/releases/redis-2.8.6.tar.gz $ tar xzf redis-2.8.6.tar.gz $ cd redis-2.8.6 $ make $ make install
Последняя команда скопировала исполняемые файлы в /usr/local/bin. Сервер Redis теперь можно запустить командой $ redis-server
, но он запустится как приложение (будет жить только в окне вашего терминала), а не как сервис (с автозапуском, преферансом и куртизанками). Сделаем его сервисом:
$ mkdir /var/redis $ mkdir /etc/redis $ cp redis.conf /etc/redis/ $ vi /etc/redis/redis.conf
Находим и изменяем значения настроек на:
demonize yes pidfile /var/run/redis.pid loglevel notice logfile /var/log/redis.log dir /var/redis/
Осталось создать скрипт запуска (init-script), в комплекте с Redis идет пример такого скрипта.
$ cp utils/redis_init_script /etc/init.d/redis
Теперь нужно его немного подредактировать под наши условия:
#!/bin/sh # # Simple Redis init.d script conceived to work on Linux systems # as it does use of the /proc filesystem. # # chkconfig: - 85 15 # description: Redis is a persistent key-value database # processname: redis REDISPORT=6379 EXEC=/usr/local/bin/redis-server CLIEXEC=/usr/local/bin/redis-cli PIDFILE=/var/run/redis.pid CONF="/etc/redis/redis.conf" case "$1" in start) if [ -f $PIDFILE ] then echo "$PIDFILE exists, process is already running or crashed" else echo "Starting Redis server..." $EXEC $CONF fi ;; stop) if [ ! -f $PIDFILE ] then echo "$PIDFILE does not exist, process is not running" else PID=$(cat $PIDFILE) echo "Stopping ..." $CLIEXEC -p $REDISPORT shutdown while [ -x /proc/${PID} ] do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis stopped" fi ;; *) echo "Please use start or stop as first argument" ;; esac
И не забыть сделать его исполняемым:
$ chmod +x /etc/init.d/redis
Включаем автозагрузку сервиса и запускаем его:
$ chkconfig --add redis $ chkconfig redis on $ service redis start
Проверить работоспособность Redis можно запустив Command Line Interface:
$ redis-cli
Вводим ping
и в ответ должно придти PONG
.
Все, для пущей уверенности перезагружаем сервер, чтобы убедится, что при запуске Redis стартует автоматически.