Не так давно, я публиковал здесь перевод официальной документации по 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, запихнуть запуск в автозагрузку, сделать запуск от другого пользователя… Кому что нравится.
в мемориз
ман прочитал на выходных, скоро поставлю и забью гигабайтами гавна
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