Redis XAMPP Windows

Как поставить 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 изменений ключей.

Запуск скриптом

В официальном руководстве пишут, что способ запуска через консоль не является безопасным, поэтому они "настоятельно рекомендуют" использовать запуск через конфигурации.

  1. Создаем папки для данных:

    sudo mkdir /etc/redis
    sudo mkdir /var/redis
  2. Скопировать скрипт из папки utils (в папке с дистрибутивом redis) в директорию /etc/init.d. В названии скрипта предлагают добавить номер порта.

    sudo cp utils/redis_init_script /etc/init.d/redis_6379
  3. Отредактировать скрипт и удостовериться, что REDISPORT будет установлен в зависимости от используемого порта.

    sudo nano /etc/init.d/redis_6379
  4. Скопировать шаблон конфигурационного файла, который можно найти в корне дистрибутива redis в папку /etc/redis используя номер порта в качестве имени.

    sudo cp redis.conf /etc/redis/6379.conf
  5. Создать директорию внутри /var/redis, эта директория будет использована как рабочая

    sudo mkdir /var/redis/6379
  6. Редактировать файл конфигурации изменив следующие параметры:

    • daemonize yes (no по-умолчанию no)
    • pidfile /var/run/redis_6379.pid (отредактировать порт если надо)
    • port если используемый порт отличается от стандартного 6379
    • loglevel установите если нужен другой
    • logfile /var/log/redis_6379.log файл с логами
    • dir /var/redis/6379 (Очень важный шаг!)
  7. Наконец необходимо добавить файл инициализации во все уровни запуска.

    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
  8. Запускаем сервер

    sudo /etc/init.d/redis_6379 start

Источники

ещё руководство как установить redis под windows, но уже нативно
redis persistange

Leave a comment

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.