Как поставить Redis и использовать из под Windows на XAMPP. Сразу скажу, что сам Redis ставился в Linux в виртуалке. Да, это не самый лучший вариант и не самый оптимальный, но, дабы не запариваться с компиляцией под Windows этот вариант для разработки в принципе нормален.
Поднимаем Redis в виртуалке: (можно все это обойти, например образом в docker)
Скачиваем Redis с официального сайта:
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar xzf redis-5.0.5.tar.gz
cd redis-5.0.5
make
если компиляция вызывает ошибки, что-то типа такого: zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
, можно прекомпилировать зависимости
cd deps
make hiredis jemalloc linenoise lua geohash-int
cd ..
make install
Далее для запуска сервера используем команду src/redis-server
и можно проверить работу Redis
src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar
Protected mode
Изначально redis-server
запускается в protected mode
, поэтому доступа к серверу redis нет. Существует несколько способов, как это разрешить (если при подключении к серверу сделать запрос, например info server
, то redis опишет несколько способов, как дать доступ).
Один из них, это запуск сервера с директивой --protected-mode no
Теперь, чтобы проверить как это работает из windows, можно запустить redis-cli. Его можно взять например тут.
PHP и Redis
Для того, чтобы связать php и redis, можно использовать dll-расширение для php. Скачать можно на официальном сайте.
Redis в фоне
Чтобы запустить redis-server в режиме демона, можно использовать директиву redis-server --daemonize yes
Сохранение данных
Изначально Redis хранит данные в памяти, но может сохранять их на диск. Существует много разных директив, чтобы сохранять данные (скорость, тайминг, блокировка и т.п.). Можно указать директиву —save 60 1000 в этом случае сохранение будет автоматическое каждые 60 секунды как минимум 1000 изменений ключей.
Запуск скриптом
В официальном руководстве пишут, что способ запуска через консоль не является безопасным, поэтому они "настоятельно рекомендуют" использовать запуск через конфигурации.
-
Создаем папки для данных:
sudo mkdir /etc/redis sudo mkdir /var/redis
-
Скопировать скрипт из папки utils (в папке с дистрибутивом redis) в директорию
/etc/init.d
. В названии скрипта предлагают добавить номер порта.sudo cp utils/redis_init_script /etc/init.d/redis_6379
-
Отредактировать скрипт и удостовериться, что REDISPORT будет установлен в зависимости от используемого порта.
sudo nano /etc/init.d/redis_6379
-
Скопировать шаблон конфигурационного файла, который можно найти в корне дистрибутива redis в папку
/etc/redis
используя номер порта в качестве имени.sudo cp redis.conf /etc/redis/6379.conf
-
Создать директорию внутри
/var/redis
, эта директория будет использована как рабочаяsudo mkdir /var/redis/6379
-
Редактировать файл конфигурации изменив следующие параметры:
daemonize yes
(no по-умолчаниюno
)pidfile /var/run/redis_6379.pid
(отредактировать порт если надо)port
если используемый порт отличается от стандартного 6379loglevel
установите если нужен другойlogfile /var/log/redis_6379.log
файл с логамиdir /var/redis/6379
(Очень важный шаг!)
-
Наконец необходимо добавить файл инициализации во все уровни запуска.
sudo update-rc.d redis_6379 defaults
На разных версиях Ubuntu могут возникнут разные ошибки, например:
insserv: Script redis_6379 is broken: incomplete LSB comment. insserv: missing `Required-Start:' entry: please add even if empty. insserv: missing `Required-Stop:' entry: please add even if empty. ``` для этого в файл `/etc/init.d/redis_6379` необдходимо в заголовок добавить две строки: ```bash Required-Start: $syslog Required-Stop: $syslog Should-Start: $local_fs Should-Stop: $local_fs
-
Запускаем сервер
sudo /etc/init.d/redis_6379 start
Источники
ещё руководство как установить redis под windows, но уже нативно
redis persistange