如何在不同端口上的单个服务器上运行 redis?

Posted

技术标签:

【中文标题】如何在不同端口上的单个服务器上运行 redis?【英文标题】:How can I run redis on a single server on different ports? 【发布时间】:2014-08-27 08:13:02 【问题描述】:

我正在使用kue,它使用node_redis,但我也已经在我的会话中使用node_redis,所以我想让kue在特定端口上创建一个服务器说默认6379 然后kue 监听端口1234

我怎么能做到这一点?我发现 this article 谈到了类似的事情,但我真的不想创建一个初始化脚本来执行此操作。

【问题讨论】:

您是否考虑过简单地将它们放在不同的数据库中? Redis 默认配置有 db 0 - 15。我有生产服务器在 1 个数据库中运行工作流管理器,而另一个数据库处理会话。无需在 2 个端口上运行或运行 2 个实例。由于它们在同一台机器上,因此运行 2 个端口/实例不会为您购买任何东西。 【参考方案1】:

启动 redis-server 并为 'port' 提供不同的参数,这可以在命令行上完成:

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 非常擅长处理写入,您可能只需要使用第二个数据库就可以了?

【讨论】:

感谢您的帖子,它帮助我意识到我什至不需要配置文件。旁注:我有一个第三方 php 脚本,它使用 flushall 并清除所有缓存,包括我的其他应用程序命名空间。这就是我启动另一个实例的原因,因为 flushall 会刷新所有数据库。【参考方案2】:

非常简单的命令:

echo "port 4000" | redis-server -

echo "port 4001" | redis-server -

【讨论】:

【参考方案3】:

您可以在一台机器上运行多个具有不同端口的redis实例。这个问题是正确的,您可以按照以下步骤操作。

通过安装第一个 Redis 实例,它默认监听 localhost:6379。

二审 创建一个新的工作目录

默认的redis实例使用/var/lib/redis作为其工作目录,dump的内存内容保存在这个目录下,名称为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

启动第二个 redis

service redis2 start


check status

lsof -i:6379
lsof -i:6380

通过这个你可以启动两个redis服务器。如果你想要更多重复这些步骤。

【讨论】:

以上是关于如何在不同端口上的单个服务器上运行 redis?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不同端口后面的单个 Tomcat 实例上运行不同的应用程序?

如何在不同端口后面的单个 JBoss AS 6 实例上运行不同的应用程序?

建站问题。服务器上运行了很多个站点,分别在不同的端口。如果想公用一个域名该如何处理。

单个服务器上的多个子域。码头工人 + NGINX @ EC2

不同端口上的 SparkThrift 服务器

如何在同一台机器上的不同网络接口上添加相同的端口?