如何在不同端口上的单个服务器上运行 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 实例上运行不同的应用程序?
建站问题。服务器上运行了很多个站点,分别在不同的端口。如果想公用一个域名该如何处理。