Redis: установка на локалку (Ubuntu)

Redis logo
Не так давно, я публиковал здесь перевод официальной документации по Redis. Теперь попробуем пощупать этот самый Редис непосредственно.

Первым делом его, конечно же, нужно установить. Здесь я опишу установку на Ubuntu 9.10. Также подразумевается, что устанавливаем мы его не на рабочий сервер, а на собственную машину для личных нужд. Установка на другие nix’ы вряд ли будет сильно отличаться.

Официальной поддержки Windows нет. Есть отдельная сборка, которая у меня вполне работала. К сожалению, последний релиз датирован прошлым апрелем и содержит достаточно старую версию сервера (0.91).

Качаем, ставим

Для Ubuntu есть пакет redis-server. Однако, у меня работал он несколько криво (может руки кривые), поэтому соберем всё сами, как показано в документации, тем более что там всё элементарно.

Делаем, как описано в разделе «быстрый старт». Скачиваем, распаковываем, make. Скачиваем, конечно, не 1.02, а выбираем последнюю версию.

Сервер собирается за считанные секунды. У нас появляются запускаемые файлы redis-server и redis-client. Никакого make install нет, поэтому будем пока запускать из того же каталога из под себя же.

$ ./redis-server

По терминалу начинают весело бежать непонятные логи. Редис заработал и это здорово. Однако, то что он при этом захватывает терминал не так здорово. Исправим это.

Исправляем конфиг

В том же каталоге лежит redis.conf, подправим его.

Делаем, чтобы сервер запускался, как демон:

daemonize yes

Демону для своих нужд нужен pid-файл. Чтобы не запускать сервер из-под рута, укажем для этого файла путь к какой-нибудь нашей папке, где есть права на запись:

pidfile /home/me/redis/redis.pid

Если не нужно, чтобы редис был доступен извне:

bind 127.0.0.1

Можно настроить логи.

loglevel debug
logfile stdout

Так как сервер запущен, как демон, все логи будут уходить в /dev/null. Можно указать свой файл для логов, но учтите, что при уровне debug он быстро забьётся мегабайтами хлама.

Всё, более тонкую настройку можно оставить на потом.

Обратите внимание, что ./redis-server сам по себе не реагирует на redis.conf. Ему нужно скормить его принудительно.

$ ./redis-server redis.conf
New pid: 1234

redis-cli и телнет

Теперь сервер висит демоном:

$ ps aux | grep redis
me        1234  17:01   0:00 ./redis-server redis.conf
me        1235  17:06   0:00 grep --color=auto redis

Для обращения к нему, можно использовать клиент redis-cli.

$ ./redis-cli set x 123
OK
$ ./redis-cli get x
123

Обалдеть! Мы сумели установить значение ключа и получить его в последствии. Вот это мощь! :)

Тоже самое можно сделать более хардкорно через телнет:

$ telnet localhost 6379
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SET x 3
qwe
+OK
GET x
$3
qwe
QUIT
Connection closed by foreign host.

Что же, наш редис работает, и это радует.

Остановка сервера

Остановка производится через посылку команды SHUTDOWN.

$ ./redis-cli shutdown
$ ./redis-cli get x
Could not connect to Redis at 127.0.0.1:6379: connect: Connection refused

Тюнинг

Вот, собственно, и всё. Redis работает и ждёт, когда вы заполните его гигабайтами полезного барахла.

Дальше можно понаписать сценариев для упрошенного start/stop/restart, запихнуть запуск в автозагрузку, сделать запуск от другого пользователя… Кому что нравится.

7 комментариев »

  • в мемориз
    ман прочитал на выходных, скоро поставлю и забью гигабайтами гавна

    epsyl, 6.04.2010, 12:30

  • > ман прочитал на выходных, скоро поставлю и забью гигабайтами гавна
    Даешь шапку на форум, хоть на редисе!

    adw0rd, 7.04.2010, 12:10

  • Ок, на редисе, так на редисе
    мне похуй на чем, я могу и на SQL :-D

    epsyl, 7.04.2010, 22:57

  • Автор, напиши о проектировании web-приложений, основаных на redis.

    Какие есть подводные камни?
    С чем может столкнуться неопытный разраб?

    inst, 18.02.2011, 21:23

  • С тем что не понимает для чего нужен редис.
    Прочитайте redis cookbook и возможно поймете.

    al, 7.07.2012, 15:37

  • доброго времени суток, подскажите, а можно ли redis использовать/настроить, как обычную базу данных без постоянного хранения данных в оперативке, т.е. данные хранятся на жест диске, запросы идут как к обычно бд?

    hurt, 9.01.2016, 18:27

  • hurt, я давно редисом не занимался, но раньше было нельзя. И сейчас, подозреваю, тоже.

    vasa_c, 13.01.2016, 11:09

Leave a comment