Как запустить Redis на одном сервере с разными портами?

Я использую kue, который использует node_redis, но я также уже использую node_redis для своих сеансов, поэтому я хотел бы, чтобы kue создавался сервер на определенном порту, скажем, по умолчанию 6379, а затем kue слушал порт 1234.

Как я смогу это сделать? Я нашел эту статью, в которой говорится о чем-то подобном, но я действительно не хочу создавать сценарий инициализации для этого.


person bob_cobb    schedule 06.07.2014    source источник
comment
Вы когда-нибудь задумывались о том, чтобы просто поместить их в разные базы данных? Конфигурация Redis по умолчанию имеет db 0–15. У меня есть производственные серверы, на которых работает диспетчер рабочих процессов в 1 БД, а другая БД обрабатывает сеансы. Нет необходимости запускать 2 порта или запускать 2 экземпляра. Поскольку они находятся на одной машине, вам ничего не стоит запустить 2 порта/экземпляра.   -  person Michael Papile    schedule 11.07.2014


Ответы (3)


Запустите redis-сервер и укажите другой аргумент для «порта», который можно сделать в командной строке:

edd@max:~$ redis-server -h
Usage: ./redis-server [/path/to/redis.conf] [options]
       ./redis-server - (read config from stdin)
       ./redis-server -v or --version
       ./redis-server -h or --help
       ./redis-server --test-memory <megabytes>

Examples:
       ./redis-server (run the server with default conf)
       ./redis-server /etc/redis/6379.conf
       ./redis-server --port 7777
       ./redis-server --port 7777 --slaveof 127.0.0.1 8888
       ./redis-server /etc/myredis.conf --loglevel verbose

Sentinel mode:
       ./redis-server /etc/sentinel.conf --sentinel
edd@max:~$ 

Вы можете сделать это, скажем, из /etc/rc.local, чтобы это происходило при запуске.

Но, возможно, вы также можете переосмыслить свой подход. Redis настолько хорошо справляется с записью, что вы можете просто обойтись второй базой данных?

person Dirk Eddelbuettel    schedule 10.07.2014
comment
Спасибо за пост, это помогло мне понять, что мне даже не нужен файл конфигурации. Боковое примечание: у меня есть сторонний php-скрипт, который использует flushall и стирает весь кеш, включая другое пространство имен моего приложения. Это моя причина запустить еще один экземпляр, потому что flushall сбрасывает все базы данных. - person smozgur; 16.12.2017

Очень простая команда:

echo "port 4000" | redis-server -

echo "port 4001" | redis-server -

person Amulya Kashyap    schedule 27.05.2020

Вы можете запустить несколько экземпляров Redis с разными портами на одном компьютере. Эта проблема верна, так как вы можете выполнить следующие шаги.

При установке первого экземпляра Redis он по умолчанию прослушивает localhost: 6379.

  • Для второго экземпляра
    создайте новый рабочий каталог

Экземпляр redis по умолчанию использует /var/lib/redis в качестве своего рабочего каталога, содержимое дампа памяти сохраняется в этом каталоге с именем dump.rdb, если вы не меняли его вручную. Чтобы избежать конфликта во время выполнения, нам нужно создать новый рабочий каталог.

mkdir -p /var/lib/redis2/
chown redis /var/lib/redis2/
chgrp redis /var/lib/redis2/

Создать конфигурации

Создайте новый файл конфигурации, скопировав /etc/redis.conf

cp /etc/redis.conf /etc/redis2.conf
chown redis /etc/redis2.conf

Измените следующие настройки, чтобы избежать конфликтов

logfile "/var/log/redis/redis2.log"
dir "/var/lib/redis2"
pidfile "/var/run/redis/redis2.pid"
port 6380

Создать файл службы

cp /usr/lib/systemd/system/redis.service /usr/lib/systemd/system/redis2.service

Измените настройки в разделе «Сервис».

[Service]
ExecStart=/usr/bin/redis-server /etc/redis2.conf --daemonize no
ExecStop=/usr/bin/redis-shutdown redis2

Начать с загрузки

      systemctl enable redis2

Начать второй повтор

service redis2 start


check status

lsof -i:6379
lsof -i:6380

Следуя этому, вы можете запустить два сервера Redis. Если вы хотите больше, повторите шаги еще раз.

person Selva Kumar    schedule 12.07.2019