Установка Redis на Ubuntu и CentOS

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 стартует автоматически.